问题标签 [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.
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),我就没有这个问题。
这是新标准施加的一些限制吗?如果是,为什么?
有没有办法解决这个限制?
linux - 如何在 openSUSE 11.2 (x86_64) 上安装/更新 gcc-4.6?
我在安装 JikesRVM 时遇到了一个错误,即
所以我正在尝试将其安装/更新到更高版本。现在,机器已经有了
我是 openSUSE 的新手,你能帮忙吗?
谢谢!
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
同样的程序以前运行良好,但现在不行了。
我什至创建了一个新项目(我没有触及编译器/链接器选项中的任何内容),但同样的问题仍然存在。
请问有人有解决办法吗?
预先感谢您的帮助 :)
gcc - 我如何知道每个 gcc 版本附带的 libstdc++?
我如何知道每个 gcc 版本附带的 libstdc++?是否有一种无需安装 gcc 即可轻松获取此信息的方法?
c++ - 如何避免错误:在抛出 'std::logic_error' 实例后调用终止 what(): basic_string::_S_construct null not valid
我这样做是为了避免将空引用传递给字符串构造函数,但是在编译时仍然会出错。
c++ - 检查 C++11 库功能
检查标准库的特定 C++11 功能是否存在的好方法是什么。
对于编译器功能,我只是顺便检查了(恕我直言)主要编译器(目前VC++、gcc、clang,也许是Intel)的编译器版本虽然这不是最好和最灵活的方法,但我不知道任何更好的东西,除了具有非常好的宏的clang 。__has_feature
但对于与编译器没有那么严格耦合的库特性来说,情况就更糟了。目前,我想使用相同的方法检查VC++的编译器版本(假设它使用自己的库,这很容易)。对于clang,我至少可以__has_include
用于大规模的基于标头的查询。除此之外,我想检查__GLIBCXX__
's value if defined 可能是一个好主意,但是我又找不到任何关于特定libstdc++版本引入了哪些功能的信息,除了当前版本支持的内容。
这些方法应该保留给预处理器检查等,因为我想在没有任何复杂配置过程并且不使用任何第三方库(是的,boost是第三方的)的仅头文件库中使用它。
那么在那些(非常狭窄的)条件下,我检查特定 C++11 库功能的可能性是什么。甚至可能在声明的特定函数或类型的规模上?
如果检查编译器或库版本仍然是最好的方法,我在哪里可以找到有关特定版本的libstdc++(可能还有其他重要的,可能是libc++ )支持的特定 C++11 功能的详细信息?
FWIW 目前我对<cstdint>
C++11<cmath>
函数和感兴趣std::hash
,但这可能会改变,并且对于一般方法可能并不重要。
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 的最新版本。
我对这个问题感到很困惑。任何帮助表示赞赏!
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
.
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
。
有没有办法在开发中混合这两个库(例如,通过使用一些预处理器标志?)
libstdc++ - 我搞砸了 libstdc++6
我在尝试安装 teampeak 时弄乱了 /usr/lib/libstdc++6。所以我到了,我没有更多的 libstdc++6 文件,我正在尽我所能。我不能再使用 apt-get 或 aptitude(我在 debian 上)。我能做些什么?