2011-11-28 54 views
19

虽然这里有一些关于铿锵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 

根据the clang C++11 status page我应该有至少部分支撑件(例如直角括号中),但它拒绝我测试所有特征。

是否有任何开关告诉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 
+4

你试过'-std = C++ 0x'吗? – ildjarn

+0

@ildjarn:是的,但它扼杀了那个争论(大约两页的错误信息和一个最终的Segfault)。 – bitmask

+0

这是Apple版本还是基本版本?询问是因为我向主站点报告了一个苹果错误,并且发生了火灾:) –

回答

19

ildjarn指出正确的说法,-std=c++0x-std=c++11。你用这个参数得到的错误可能是因为你使用的libstdC++的版本使用了一些C++ 11或者非标准的C++,而铿锵2.9不支持。

+4

尝试一下'clang ++ -std = C++ 0x -stdlib = libC++ ...'(假设,当然你已经安装了libC++)。 – Hugh

+0

@Huw:是的,我刚刚意识到我有'libC++'和'libstdC++'之间的选项,到目前为止我懒得编译'clang'或'llvm',所以我从我的软件包源获得它,不包括'libC++',如果我相信项目文档库仅适用于Mac。这意味着它不适合我,对吧? – bitmask

+0

@bitmask:是的,它看起来不适用于非OS X系统,唉。 – Hugh