LLVM和Clang对C++ 11的支持

Kir*_*kov 4 c++ xcode llvm clang c++11

我有一些代码写给MS VC++ 10的代码.我使用C++ 11,特别是像

std::function<int (int)> f =...;
auto it = v.begin();
for_each(it1, it2,[&](int& i) { ++i;}); 
Run Code Online (Sandbox Code Playgroud)

现在我用llvm&clang尝试MacOS和XCode,我的代码无法编译!问题是为什么?也许,我将指定一个使用c ++ 11的选项.在这种情况下,我在哪里可以在xcode中修复它?

How*_*ant 14

你需要Xcode 4.2.

在构建设置中,搜索"c ++ 0x"并将"C++语言方言设置为C++ 0x [-std = c ++ 0x]".然后搜索"libc ++"并将"C++标准库"设置为"libc ++".

并非所有C++ 11工具都可用.例如,尚不支持lambdas.

  • @ bames53:如果你想在Snow Leopard上使用libc ++,我可以帮到你.到这里(http://libcxx.llvm.org/)并按照10.6的说明进行操作.您需要我个人网站上托管的帮助程序库.如果您需要帮助,可以直接与我联系.Xcode 4.1不支持libc ++,但只支持gcc 4.2.gcc 4.2没有为C++ 11提供库支持(尽管有一些tr1支持). (3认同)
  • Xcode 4.1 clang也支持许多C++ 11功能,但您必须将选项放在"其他标志"字段中.另外,Xng版本的clang不允许在OS X pre-Lion上使用libc ++,所以即使你安装libc ++也不能使用它.详细信息:http://stackoverflow.com/questions/7226753/osx-lion-xcode-4-1-how-do-i-setup-a-c0x-project/7236451#7236451 (2认同)

rub*_*nvb 5

有关Clang目前支持的C++ 11功能列表,请参阅此列表.Lambda表达式(和语法相关的初始化列表)目前尚未实现.

你现在唯一的选择(直到Clang devs实现lambda支持)才使用MacPorts的GCC 4.5/4.6编译器.

额外的命令行选项将是-std=c++0x(在Clang和GCC的下一个版本中它将是正确的-std=c++11).