MacのClangでC++11を試すには clang++ -std=c++11 -stdlib=libc++ としてみよう


このエントリーをはてなブックマークに追加

MacのClangもアップデートできたので早速C++11を試す。unordered_setという機能を使ってみようと、main.cppに

#include <unordered_set>
...

と書き

$ clang++ -std=c++11 main.cpp

とビルドを試みるも、以下のエラーが出てコンパイルに失敗。ヘッダファイルが見つからないらしい。

main.cpp:1:10: fatal error: 'unordered_set' file not found
#include <unordered_set>
         ^
1 error generated.


どうやらlibc++と呼ばれる、C++11をターゲットとした標準ライブラリを使うのが正解らしい。そこでClangのオプションを以下のように変更すると、無事コンパイルが通った。

$ clang++ -std=c++11 -stdlib=libc++ main.cpp

補足

g++の場合は

$ g++ -std=c++11 main.cpp