3

Apple 不再在他们的平台上推进 GCC 或 libstdc++,但他们确实发布了 clang。默认情况下,在 C++11 模式下使用 Apple 提供的 clang 编译时,默认的标准库仍然是 libstdc++,它太旧,无法在 C++11 模式下正常运行。

我想在配置时测试 __GLIBCXX__ 值,并拒绝尝试在 C++11 模式下针对“太旧”的 libstdc++(比如 Apple 发布的那个)进行构建。所以我需要选择一个合理的最低版本。

虽然 GCC 在使用此表枚举编译器的不同版本中的语言功能支持方面做得很好,但我找不到一个类似的表来显示每个 libstdc++ 版本所支持的库功能。这使得很难选择一个合理的最小值,特别是如果我的项目在 C++11 模式下编译时依赖于特定的库功能。

对 C++11 库功能提供某种有意义的支持的最早版本的 libstdc++ 是什么?我意识到这是一个主观问题——我正在寻找更多来自那些在自己的项目中决定这个问题的人的指导。作为界限,libstdc++ 4.2 显然是“out”,而 4.8 显然是“in”。如果你为你的项目决定这个,你会在哪里划清界限,为什么?

4

2 回答 2

3

我不会为 4.4 或 4.5 烦恼,它们实现了在某些重要方面与最终标准不同的 C++0x 草案。4.6 对所有重要部分(移动语义、、、、、、、、、、无序容器、、、<type_traits>... )都有很好的支持,4.7shared_ptr可能已经完成了 90%。unique_ptr<thread><mutex><tuple>bindfunction

您应该能够从http://gcc.gnu.org/onlinedocs/gcc-4.6.4/libstdc++/manual/status.htmlhttp://gcc.gnu.org/onlinedocs/gcc-4.7.3看出/libstdc++/manual/status.html但由于某种原因链接已损坏。

4.7 中的支持目前非常接近 4.8 中的支持,见http://gcc.gnu.org/onlinedocs/gcc-4.8.1/libstdc++/manual/manual/status.html#status.iso.2011

于 2013-06-08T19:18:11.153 回答
0

要挑剔 gcc 不是 libstdc++ 的意思,一个是编译器,另一个是标准库,但是由于它们通常分布在同一个包中,您可以参考这个页面,看看您需要什么以及在什么版本的 GCC该给定功能可用。

于 2013-06-08T20:40:04.360 回答