【问题标题】:c++0x library availability in any compiler?c++0x 库在任何编译器中的可用性?
【发布时间】:2011-06-26 03:12:09
【问题描述】:

该标准无疑需要数年时间才能实施,这很糟糕,因为它看起来很棒。但我正在阅读它,至少添加的库(尤其是哈希图)会立即非常有用。我在 g++ 文档中注意到我可以获得 4.3 或更高版本并使用标志来请求新功能,无论存在什么,但我想知道是否有任何方法可以获取库。现在内置了许多最好的增强功能,这一点真的很棒,终于内置了一个不错的随机数工具!

那么,有没有我现在可以使用的编译器,它们有一个相当完整的库,即使它不能使用一些很酷的新语言特性,比如 auto?

【问题讨论】:

    标签: c++ c++11


    【解决方案1】:

    如果你想要标准库扩展,你可以使用Boost。无论如何,新的标准库增强主要受 Boost 库的启发。

    至于支持的编译器,Visual Studio 2010 supports a subset of the C++11 standard,GCC 有currently the best support for C++11,Clang 也是adopting the new standard。不知道其他编译器,但我认为他们很快就会跟进。

    【讨论】:

    • 差不多这个 - 新的库主要在 Boost 中找到。
    【解决方案2】:

    带有选项-std=c++0x 的GCC 已经涵盖了相当不错的C++0x 子集。 4.4 版已经很好用了,4.6 版更是如此。它缺少模板别名,但许多非常有用的语言特性以及库的很大一部分都在那里并且功能齐全。

    这里是full feature list

    【讨论】:

    • 谢谢,我在一个列表中看到了 4.6,但不确定它是否还好!我今天必须下载它。我知道那里还有另一个问题——除了系统中的编译器之外,我在安装 4.6 编译器时遇到了问题....
    • @Dov:我已经在各种 Linux 和 MacOSX(作为 root 和非 root)上构建了我自己的 GCC 4.6 版本,没有任何问题。只需获取必要的库(GMP、MPFR、MPC),使用--prefixmake install 进行配置。我发现它非常简单! (当您使用它时,您也可以尝试 4.7!)
    • 我在它自己构建后运行它时遇到了问题,但事实证明一些库已放入 /opt/tools/lib 和一些放入 /opt/tools/lib64,所以它只是将两者都放入 LD_LIBRARY_PATH 的问题。 4.5.1 很好用,我会在安装时安装 4.6 或 4.7。
    【解决方案3】:

    除了-std=c++0x 模式下的 GCC 及其在 GCC 支持的所有平台上的默认 libstdc++,您还可以使用 LLVM 的libc++,它在 Linux/BSD/Mac 上运行良好,但尚未移植到 Windows .

    【讨论】:

      【解决方案4】:

      GCC/libstdc++ 包含大部分库,但可能需要将 tr1/ 添加到包含路径(#include <tr1/unordered_map> 用于散列映射)。它还将新的库内容放入命名空间 std::tr1 而不仅仅是 std

      (TR1 代表 Technical Report 1,这是一份描述 C++0x 库添加的报告。)

      【讨论】:

        【解决方案5】:

        一些库,尤其是您在此处提到的库 (unordered_map) 早在 2003 年就被定义为技术审查的一部分,并且主要未修改地移至 C++0x 标准。大多数编译器都在 std::tr1 命名空间中实现了 TR1 库。

        其他库是从其他来源提取的,Boost 是即将推出的标准(functionbindthread...)的重要库来源,但这取决于您要添加到您的项目。

        至于您是否可以从 C++0x 中提取库并在非 C++0x 编译器中使用它们,您很可能无法这样做,因为它们将利用新功能(想想移动构造函数),这将无法编译。

        【讨论】:

          【解决方案6】:

          这里是您可以找到大多数编译器的 c++0x 支持的链接

          http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

          只要添加了新的 c++0x 支持,列表就会更新。 如您所见,g++ 目前已支持最大数量的 C++0x 功能。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2010-10-14
            • 2010-12-23
            • 2014-11-05
            • 2011-02-10
            • 2014-03-31
            • 2010-09-08
            • 1970-01-01
            • 2013-10-27
            相关资源
            最近更新 更多