Xcode 4.6 にパッケージ化された clang++ (clang-421.0.60) を使用していますが、boost::spirit で問題が発生しました。フラグなしでコンパイルすると、すべて正常にコンパイルされます。「-std=c++11」でコンパイルすると、次のエラーが発生します (「boost/spirit/include/qi.hpp」のインクルードで):
In file included from test_spirit11.cpp:1:
In file included from /usr/local/include/boost/spirit/include/qi.hpp:16:
In file included from /usr/local/include/boost/spirit/home/qi.hpp:14:
In file included from /usr/local/include/boost/spirit/home/qi/action.hpp:14:
In file included from /usr/local/include/boost/spirit/home/qi/action/action.hpp:21:
/usr/local/include/boost/spirit/home/support/action_dispatch.hpp:21:10: fatal error:
'type_traits' file not found
#include <type_traits>
問題は、使用されているデフォルト ライブラリ (stdlibc++) が type_traits を 'tr1/type_traits' として定義しているのに対し、boost::spirit は 'type_traits' だけを想定していることです。もちろん、次のようにしてこの問題を解決できます。
clang++ -std=c++11 -stdlib=libc++ <...>
私は libc++ を使用したいと思っていますが、実際に使用することは困難です (多くのライブラリはまだ stdlibc++ を使用し、依存しています)。したがって、私は libc++ を使用しないことを余儀なくされています。
これに対処する方法について何か提案はありますか?より多くのライブラリ管理者が libc++ をサポートするか、Apple が stdlibc++ の新しいバージョンを提供してくれることを心から願っています。C++11 の新しい機能にアクセスできるのに、ライブラリのサポートがないためにそれらを十分に活用できないことは大きな不満でした。