什么是libstdc ++的合理最低版本要求C ++ 11支持

时间:2013-06-08 19:00:13

标签: c++ c++11 libstdc++

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

我想在配置时测试__GLIBCXX__值,并拒绝尝试使用“太旧”的libstdc ++来构建C ++ 11模式,就像Apple发布的那样。所以我需要选择合理的最低版本。

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

最早发布的libstdc ++是什么,它为C ++ 11库特性提供了一些有意义的支持?我意识到这是一个主观问题 - 我正在寻找那些在自己的项目中决定这个问题的人的指导。作为界限,libstdc ++ 4.2显然是“out”,4.8显然是“in”。如果你为你的项目做出决定,你会在哪里画线?为什么?

2 个答案:

答案 0 :(得分:3)

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

您应该可以从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

答案 1 :(得分:0)

要挑剔gcc不是libstdc ++意味着一个是编译器而另一个是标准库,但由于它们通常分布在同一个包中,你可以参考this page并看看你需要什么以及可以获得特定功能的GCC版本。