问题标签 [libstdc++]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5486 浏览

c++ - 在 std::unordered_map 中使用对象引用作为键

我想知道是否可以在 C++ 的 unordered_map 容器中使用对象引用作为键。

在尝试编译这个简单的代码片段时,我遇到了一些关于方法重新定义的错误:

在 libc++ 中使用 clang

/usr/include/c++/v1/unordered_map:352:12:错误:无法重新声明类成员

size_t operator()(const _Cp& __x) const

将 gcc 4.6 与 libstdc++ 一起使用

/usr/include/c++/4.6/bits/hashtable_policy.h:556:5:错误:'std::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::mapped_type& std ::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::operator [with _Key = Object&, _Pair = std::pair, _Hashtable = std::_Hashtable, std::allocator >, std::_Select1st >, std::equal_to, object_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>, std::__detail ::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::mapped_type = int]'不能重载

/usr/include/c++/4.6/bits/hashtable_policy.h:537:5 : 错误: with 'std::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::mapped_type& std::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::operator[](const _Key&) [with _Key = Object&, _Pair = std::pair, _Hashtable = std: :_Hashtable, std::allocator >, std::_Select1st >, std::equal_to, object_hash, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, false, false, true>, std::__detail::_Map_base<_Key, _Pair, std::_Select1st<_Pair>, true, _Hashtable>::mapped_type = int]'</p>

如果我改用旧的 gnu hash_map (__gnu_cxx::hash_map),我就没有这个问题。

这是新标准施加的一些限制吗?如果是,为什么?

有没有办法解决这个限制?

0 投票
1 回答
18491 浏览

linux - 如何在 openSUSE 11.2 (x86_64) 上安装/更新 gcc-4.6?

我在安装 JikesRVM 时遇到了一个错误,即

所以我正在尝试将其安装/更新到更高版本。现在,机器已经有了

我是 openSUSE 的新手,你能帮忙吗?

谢谢!

0 投票
2 回答
2056 浏览

c++ - 没有可用于“libstdc++-6!_ZNSo9_M_insertIlEERSoT_() at 0x6fc868a8”的源

我在 Windows 7 Starter 32bit 下将 MinGW(最初与 mingw-get-inst-20120426.exe 一起安装)与 Eclipse for C/C++(Indigo SR2)结合使用,我刚刚升级到 gcc/g++ 4.7.0:

我修复了 Eclipse 保留旧版本参考的问题 ( https://bugs.eclipse.org/bugs/show_bug.cgi?id=206372#c2 )

但是当我尝试运行一个像这个一样简单的程序时,它崩溃了:

当我尝试调试时,问题似乎来自以下cout行:

如果我跨过它,Eclipse 会向我发出这个错误信号:

这是单击“跳过”该行后的 IDE 屏幕截图:http: //i.stack.imgur.com/QexxQ.png

同样的程序以前运行良好,但现在不行了。

我什至创建了一个新项目(我没有触及编译器/链接器选项中的任何内容),但同样的问题仍然存在。

请问有人有解决办法吗?

预先感谢您的帮助 :)

0 投票
2 回答
3856 浏览

gcc - 我如何知道每个 gcc 版本附带的 libstdc++?

我如何知道每个 gcc 版本附带的 libstdc++?是否有一种无需安装 gcc 即可轻松获取此信息的方法?

0 投票
1 回答
91945 浏览

c++ - 如何避免错误:在抛出 'std::logic_error' 实例后调用终止 what(): basic_string::_S_construct null not valid

我这样做是为了避免将空引用传递给字符串构造函数,但是在编译时仍然会出错。

0 投票
2 回答
2836 浏览

c++ - 检查 C++11 库功能

检查标准库的特定 C++11 功能是否存在的好方法是什么。

对于编译器功能,我只是顺便检查了(恕我直言)主要编译器(目前VC++gccclang,也许是Intel)的编译器版本虽然这不是最好和最灵活的方法,但我不知道任何更好的东西,除了具有非常好的宏的clang 。__has_feature

但对于与编译器没有那么严格耦合的库特性来说,情况就更糟了。目前,我想使用相同的方法检查VC++的编译器版本(假设它使用自己的库,这很容易)。对于clang,我至少可以__has_include用于大规模的基于标头的查询。除此之外,我想检查__GLIBCXX__'s value if defined 可能是一个好主意,但是我又找不到任何关于特定libstdc++版本引入了哪些功能的信息,除了当前版本支持的内容。

这些方法应该保留给预处理器检查等,因为我想在没有任何复杂配置过程并且不使用任何第三方库(是的,boost是第三方的)的仅头文件库中使用它。

  1. 那么在那些(非常狭窄的)条件下,我检查特定 C++11 库功能的可能性是什么。甚至可能在声明的特定函数或类型的规模上?

  2. 如果检查编译器或库版本仍然是最好的方法,我在哪里可以找到有关特定版本的libstdc++(可能还有其他重要的,可能是libc++ )支持的特定 C++11 功能的详细信息?

FWIW 目前我对<cstdint>C++11<cmath>函数和感兴趣std::hash,但这可能会改变,并且对于一般方法可能并不重要。

0 投票
1 回答
151 浏览

libstdc++ - Boost-MPI HelloWorld 编译问题

编辑:已解决,不正确的升压设置 /facepalm

我一直在尝试在旧系统/集群上安装 boost-mpi。

安装 boost 并使用 bjam --with-mpi 后,我尝试编译 boost-mpi 设置教程附带的 hello_world 示例。我使用 mpic++ 为 bjam 提供了 mpi-autoconfig,当我使用以下内容进行编译时:

我收到以下错误:

所以我猜测用bjam构建的时候肯定已经找到了GLIBCXX3.4.9,但是之后

我用了

并且每个只有 3.4.8 作为 GLIBCXX 的最新版本。

我对这个问题感到很困惑。任何帮助表示赞赏!

0 投票
3 回答
35982 浏览

c++ - gcc 4.8 或更早版本对正则表达式有问题吗?

我正在尝试在 C++11 代码中使用 std::regex,但似乎支持有点错误。一个例子:

输出:

当使用 gcc (MacPorts gcc47 4.7.1_2) 4.7.1 编译时,或者使用

或者

此外,如果我只有两个替代模式,例如st|mt,正则表达式效果很好,所以看起来最后一个由于某些原因不匹配。该代码适用于 Apple LLVM 编译器。

关于如何解决这个问题的任何想法?

更新一种可能的解决方案是使用组来实现多种替代方案,例如(st|mt)|tr.

0 投票
1 回答
21431 浏览

c++ - 使用带有 clang++ -stdlib=libc++ 的 libstdc++ 编译库

我在 Mac OS X (10.8.2) 下使用 C++ 工作,最近我想出了使用 C++11 功能的需求,这些功能可以通过使用 libc++ stdlib 的 clang++ 编译器获得。但是,我还需要使用一些针对 libstdc++(来自 MacPorts)编译和链接的遗留库。

这样做时,我得到了链接错误,因为使用例如 的遗留库的标头std::string需要针对std::__1::basic_string(即 libc++ 的实现std::string)而不是实现来解析std::basic_string

有没有办法在开发中混合这两个库(例如,通过使用一些预处理器标志?)

0 投票
1 回答
99 浏览

libstdc++ - 我搞砸了 libstdc++6

我在尝试安装 teampeak 时弄乱了 /usr/lib/libstdc++6。所以我到了,我没有更多的 libstdc++6 文件,我正在尽我所能。我不能再使用 apt-get 或 aptitude(我在 debian 上)。我能做些什么?