来自 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/