clang ++ C++ 11调用

bit*_*ask 22 c++ clang c++11

虽然这里有一些关于clang的C++ 11支持的问题,但我似乎无法clang++吃掉我的C++ 11代码.

$ clang++ --version
clang version 2.9 (tags/RELEASE_29/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

根据clang C++ 11状态页面,我应该至少部分支持(例如直角括号),但它拒绝我测试的所有功能.

是否有任何转换来告诉clang使用C++ 11?


示例测试:

$ clang++ -stdlib=libstdc++ cpp11.cpp 
cpp11.cpp:16:33: error: a space is required between consecutive right angle brackets (use '> >')
  std::vector<std::pair<int,char>> xs;
                                ^~
                                > >
cpp11.cpp:18:8: error: C++ requires a type specifier for all declarations
  auto y = x;
  ~~~~ ^
2 errors generated
Run Code Online (Sandbox Code Playgroud)

bam*_*s53 22

ildjarn指出正确的参数,-std=c++0x-std=c++11.您使用该参数获得的错误可能是因为您使用的libstdc ++版本使用的是某些C++ 11或非标准C++,而clang 2.9不支持.

  • 尝试一下`clang ++ -std = c ++ 0x -stdlib = libc ++ ...`(假设当然安装了libc ++). (4认同)
  • @bitmask我刚刚做了一个快速的谷歌搜索,并提出了一篇可能有帮助的文章:http://solarianprogrammer.com/2011/10/16/llvm-clang-libc-linux/ (3认同)