【问题标题】:How can I use C++ 11 features in Clang?如何在 Clang 中使用 C++ 11 功能?
【发布时间】:2012-05-11 15:18:58
【问题描述】:

如何在 Clang 中使用最新的 C++ 11 功能?支持哪些(子)功能集?

【问题讨论】:

  • 我在这里添加了c++11 标签,这个问题似乎可能会在未来引起足够的兴趣,让 C++11 专家提前获得额外的可见性对我来说是值得的——但如果你们希望将标签限制为严格的 language 问题,请随时删除它——我很想知道它。谢谢:)

标签: c++ c++11 clang


【解决方案1】:

您将需要 clang 3.3 才能使用 C++ 11 中最相关的功能集。阅读C++ Support in Clang 以获取最新支持功能的完整列表。 Clang 3.3 声称是 C++11 功能完整的。

Clang 的命令行与 gcc 兼容,因此您必须通过 followinf 命令行开关启用 C++11 支持

-std=c++11

Clang 3.3 还支持一堆 C++11 后的特性(如 decltype(auto)、成员初始化器和聚合)。使用此命令行开关启用它们

-std=c++1y

【讨论】:

  • 这表明不幸的是这个页面不是最新的......我会在列表中提出这个问题:x
  • 是的,但是有一个问题导致它无法更新缓存...所以只需 Ctrl+R 就可以了。
  • 如果您在 Mac 上使用 clang/llvm,您还必须添加 -stdlib=libc++(除了 -std=c++11 标志)来访问大多数功能,因为它们在旧的 libstdc++。但请注意 - 在将标准对象传递给与 libstdc++ 链接的库时,您会遇到 abi-inconsistencies(例如,如果您使用未使用 libc++ 手动编译的 boost)
  • 从源代码构建clang时是否有一个选项可以用来使c++11默认启用?
【解决方案2】:

以下是 clang 支持的最新功能列表:

http://clang.llvm.org/cxx_status.html

要激活 C++11,您必须在您的 clang 调用中添加 -std=c++11,例如 gcc。 如果您使用支持 clang 或 gcc 的 IDE,则可以使用特定的项目设置选项来执行此操作。

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2012-12-16
    • 2013-01-03
    相关资源
    最近更新 更多