libstdc++.7のversioned namespaceに起因する問題
GCC4.6.3/4.7.0のlibstdc++から修正されたversioned namespaceを有効にするとboost/detail/container_fwd.hppのforward declとぶつかって曖昧性が生じるためコンパイルエラーになる部分が発生しています。
Interprocessでも同様の問題があったようですが、こちらは修正済みです。
既に報告しましたがこれがどのサブライブラリ下にあるのか私はちょっとよくわかってないので(Boost.Containersかと思ったけど違うよう)対応までには時間がかかるかもしれないです。
#6323 (Conflicting forward declarations with versioned namespace in libstdc++.) – Boost C++ Libraries
#6287 (hardcoded fwd declarations don't work for gcc configured withor --enable-symvers=gnu-versioned-namespace) – Boost C++ Libraries
あと私は4.6.3でしか試してないので4.7.0の方はもう少し違うかもしれないです。
現在のwaはboost/detail/container_fwd.hppで以下のようにします。
Index: container_fwd.hpp =================================================================== --- container_fwd.hpp (revision 76217) +++ container_fwd.hpp (working copy) @@ -110,6 +110,8 @@ namespace std { +namespace __7 +{ template <class T> class allocator; template <class charT, class traits, class Allocator> class basic_string; @@ -124,6 +126,7 @@ #else template <class T> class complex; #endif +} #if !defined(BOOST_CONTAINER_FWD_BAD_DEQUE) template <class T, class Allocator> class deque; @@ -140,8 +143,11 @@ #if !defined(BOOST_CONTAINER_FWD_BAD_BITSET) template <size_t N> class bitset; #endif +namespace __7 +{ template <class T1, class T2> struct pair; } +} #if defined(BOOST_MSVC) #pragma warning(pop)
いくつかの定義がstd::__7に移っているのでnamespaceを修正すれば問題ないです。
次のBoost 1.49.0で直ってるといいのですが。