C++ Clang 3.1和C++;11支助状况
从clang的C++11支持状态网站上,它说,“初始值设定项列表”和“Lambda表达式”从3.1版开始都受支持 但是,使用LLVM/Clang trunk(3.2),根据初始值设定项列表和lambda表达式进行编译将产生错误消息C++ Clang 3.1和C++;11支助状况,c++,c++11,llvm,clang,C++,C++11,Llvm,Clang,从clang的C++11支持状态网站上,它说,“初始值设定项列表”和“Lambda表达式”从3.1版开始都受支持 但是,使用LLVM/Clang trunk(3.2),根据初始值设定项列表和lambda表达式进行编译将产生错误消息 有人知道Clang>3.1是否支持这些功能吗?默认情况下,Clang++将不会启用C++11功能-您有 或 另外,您可以使用 LBSTDC++< /COD>和Clang自己之间进行切换,这是C++标准库的不同实现。code>libc++在某些情况下,C++11标准的实
有人知道Clang>3.1是否支持这些功能吗?默认情况下,
Clang++
将不会启用C++11功能-您有
或
另外,您可以使用<代码> LBSTDC++< /COD>和Clang自己之间进行切换,这是C++标准库的不同实现。code>libc++在某些情况下,C++11标准的实现可能比现有的
libstdc++
库更好
# 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]
后者在使用过时的版本\uuuu has\uu feature
宏,根据以下说明检查对功能的clang支持:
例如,\uuuuuuuuuuuuu特性(cxx\u通用初始化器)
或\uuuuuuuuuuu特性(cxx\u lambdas)
将在这些特性可用并启用时返回true
就我个人而言,我希望这些功能在Clang4.0中准备就绪,预计将在下一个Xcode(可能是2012年6月)中发布
--编辑以澄清我一直在测试的版本——显然,clang版本控制比我意识到的要复杂得多 第二个不是为了GCC兼容性。GCC还有一个严格的
C++11
模式gnu++11
用于为可能的内部代码和glibc(可能是gnu90
或gnu99
启用某些gnu扩展)。使用-std
命令行开关将无法启用提问者询问的功能,因为clang尚未支持这些功能。@BillWeinman他们在最近的3.1版本中得到了支持,并且已经在主干上运行了一段时间。这些问题是关于初始值设定项列表和lambda表达式的。Clang2.9不支持这些特性。初始值设定项列表和lambda都受Clang3.1的支持,并且在TopofTrunk中已经支持了一段时间。另外,状态页面已经很好地更新了一段时间了,我想你可能把Xcode版本和Clang版本搞混了。Clang 3.1(最新版本)几乎完全支持C++11,包括lambda和初始值设定项列表。C++--version
说Apple Clang version 3.1(tags/Apple/Clang-318.0.58)(基于LLVM 3.1svn)
--这不是Clang 3.1吗?不,不是Apple clang
版本与clang版本不同LLVM 3.1svn
表示这是3.0版和3.1版之间某段时间的SVN快照。我不确定它有多老了,但它似乎至少从2月份就出现了。可能是重复的
# enables some additional C++11 extensions GCC has
clang++ -std=gnu++11 [input files...]
# 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]