質問

現在、OpenSolaris 2009-06で開発しています。 Boost :: MPLドキュメントは、Sunコンパイラがサポートされていません(ドキュメントは2004年に最後に更新されました)。 Boostのトップレベルのドキュメントは、Sunコンパイラ5.10以降がサポートされていることを示唆しているようです。これは、一般的なレベルのサポートであるか、MPLが含まれていますか。 sun 5.10コンパイラのC ++準拠の状態に関する詳細はありますか?

常にGCCを使用してコンパイルできました。

役に立ちましたか?

解決 3

正確な回答が提供されていないため、自分で回答する必要があります。

opensolaris(2009.06)およびboost-1.4.1はうまく機能しているようです。 ./ bjam は適切なスイッチを選択し、 boost :: mpl は存在するsunコンパイラーでうまく機能しているようです。そのため、コンパイラのサポートに関するmplのドキュメントはかなり古いと言えます。

他のヒント

Solaris 10でBoostとSunのCCコンパイラである程度成功しましたが、それは苦痛です。覚えておくべき主なことは、あなたが必要であるということです

 -library=stlport4 -features=tmplife -features=tmplrefstatic

あなたがコンパイルするすべてのCXXFLAGSで、私が試したすべてのテンプレートのみのライブラリはこれでうまくいくようです(コンパイルが必要なすべてのライブラリをスキップし、詳細はこちら

これはもちろん、リンクする必要のあるライブラリを再構築する必要があることを意味します(既にstlport4を使用している場合は非常に幸運です)。

残念なことに、これはBoostを使用しない唯一の(めったにない)有効な理由です:-(

Sun C ++ Frontend tailsブログ

私は過去にこの問題を自分で戦いましたが、それは後部の痛みです。

Chris Huang-Leaverの回答をもう少し具体的にするには、SunコンパイラでSTLPort4を使用する必要があります。 Sunが提供するデフォルトのSTLは、ドキュメントごとに不完全です(ある時点で追跡します)。クリスが言及した他のオプションは有用ですが、実際には問題の根本原因ではありません。

良いニュースは、Sunがコンパイラと共にSTLPortバージョン4を提供する なので、必要なのは" -library = stlport4"を含めることだけです。それに切り替えるためにフラグを立てます。 1つの正しいバージョンではなく、2つのバージョン(1つは半破損)のSTLを提供する理由は、私を超えています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top