2011-11-28 59 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