c++ - Clang 3.1 和 C++11 支持状态

标签 c++ c++11 llvm clang

来自 clang 的 C++11 支持状态网站,http://clang.llvm.org/cxx_status.html ,上面写着,“Initializer List”和“Lambda Expression”都是从3.1版本开始支持的。

但是,使用 LLVM/Clang 中继 (3.2),针对初始化列表和 lambda 表达式进行编译会产生错误消息。

有谁知道 Clang >3.1 是否支持这些功能?

最佳答案

默认情况下,clang++ 不会启用 C++11 功能 - 你有 to pass an additional flag during compilation .

clang++ -std=c++11 [input files...]

或者

# enables some additional C++11 extensions GCC has
clang++ -std=gnu++11 [input files...] 

此外,您可以在使用 libstdc++ 和 Clang 自己的 libc++ 之间切换,它们是 C++ 标准库的不同实现。 libc++ 在某些情况下可能比现有的 libstdc++ 库更好地实现 C++11 标准。

# uses clang's C++ library in C++98 mode
clang++ -stdlib=libc++ [input] # uses clang's C++ library

# uses clang's C++ library and enables C++11 mode
clang++ -stdlib=libc++ -std=c++11 [input] 

如果您在具有过时版本的 libstdc++(如 Mac OSX)的环境中使用 Clang,后者很重要,但请注意这两个 C++ 库彼此不兼容,因此如果要使用它,则必须重建对 libc++ 的任何依赖项。

关于c++ - Clang 3.1 和 C++11 支持状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10601545/

相关文章:

objective-c - 忽略单个文件中的 "Unused Entity Issue: Unused Variable"

rust - 我如何真正禁用所有 rustc 优化?

gcc - 为什么 LLVM 项目使用 GCC Headers

c++ - 动态数组的求和和平均值

c++ - 如何在数组中的整数 ADT 堆栈中找到最大值

c++ - 为具有特定成员变量值的类创建不同类型

c++ - 如何使用 auto 声明数组

c++ - Vim 如何添加接受输入的键绑定(bind)

c++ - 使用数组的文件输出不正确

c++11 - GNU 和 ICC 编译器之间的差异 : command line warning #10370: option '-std=c++11' is not valid for C compilations