2011-11-28 19 views
19

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 

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:はい、それは恐ろしいことですが、その引数(約2ページのエラーメッセージと最終的なSegfault)にひどく悩まされます。 – bitmask

+0

これはApple版ですか、それともベース版ですか?主なサイトにアップルのバグを報告したために火炎に遭いました: –

答えて

19

ildjarnが正しい引数、-std=c++0x又は-std=c++11を指摘します。あなたが使用しているlibstdC++のバージョンでは、2.9がサポートしていないC++ 11または非標準のC++を使用しているため、この引数でエラーが発生している可能性があります。

+4

'clang ++ -std = C++ 0x -stdlib = libC++ ...'の行に沿って何かを試してみてください(もちろん、libC++がインストールされていると仮定します)。 – Hugh

+0

@Huw:はい、私は 'libC++'と 'libstdC++'の間にオプションがあることを知りましたが、これまでは 'clang'や' llvm'を自分自身でコンパイルするのが面倒だったので、 'libC++'は含まれておらず、もし私がライブラリがMac用にしか利用できないというプロジェクトのドキュメントがあると思うならば。それは私のために利用できないことを意味します、そうですか? – bitmask

+0

@bitmask:そうですね、OS X以外のシステムで利用できるようには見えません。 – Hugh

関連する問題