現在、OpenSolaris 2009-06 で開発しています。Boost::MPL ドキュメントは、sun コンパイラがサポートされていないことを示唆しているようです(ドキュメントは 2004 年に最後に更新されました)。Boost の最上位のドキュメントは、5.10 以降の Sun コンパイラがサポートされていることを示唆しているようです。Sun 5.10 コンパイラの C++ 準拠の状態について詳細を知っている人はいますか?
GCCを使用していつでもコンパイルできました。
現在、OpenSolaris 2009-06 で開発しています。Boost::MPL ドキュメントは、sun コンパイラがサポートされていないことを示唆しているようです(ドキュメントは 2004 年に最後に更新されました)。Boost の最上位のドキュメントは、5.10 以降の Sun コンパイラがサポートされていることを示唆しているようです。Sun 5.10 コンパイラの C++ 準拠の状態について詳細を知っている人はいますか?
GCCを使用していつでもコンパイルできました。
Solaris 10 で Boost と Sun の CC コンパイラを使用してある程度の成功を収めましたが、それは苦痛です。覚えておくべき主なことは、
-library=stlport4 -features=tmplife -features=tmplrefstatic
あなたがコンパイルするすべてのCXXFLAGSで、私が試したすべてのテンプレートのみのライブラリはこれでうまくいくようです(コンパイルが必要なすべてのライブラリをスキップしてください、詳細はこちらを参照してください)
もちろん、これは、リンクする必要のあるライブラリを再構築する必要があることを意味します (既に stlport4 を使用している場合は非常に幸運です)。
悲しいことに、これは Boost を使用しない唯一の (わずかながら) 正当な理由です :-(
私は過去にこの問題を自分で解決しましたが、それは後回しです。
Chris Huang-Leaver の回答をもう少し具体的に説明するには、Sun コンパイラで STLPort4 を使用する必要があります。Sun が提供するデフォルトの STL は、独自のドキュメントによると不完全です (いつか追跡します)。Chris が言及している他のオプションは役に立ちますが、実際には問題の原因ではありません。
幸いなことに、SunはSTLPort バージョン 4 を自社のコンパイラと共に提供しているため、それに切り替えるには「-library=stlport4」フラグを含めるだけで済みます。彼らが STL の 1 つの正しいバージョンではなく 2 つのバージョン (1 つは半壊れたバージョン) を提供する理由は、私には理解できません。
正確な答えが提供されていないので、自分で投稿する必要があると思います。
opensolaris(2009.06)とboost-1.4.1はうまく機能しているようです。./bjam
ピックは適切なスイッチを選択し、boost::mpl
存在するサンコンパイラでうまく機能するようです。したがって、私が知る限り、コンパイラのサポートに関するmplのドキュメントはかなり時代遅れです。