2017-10-10 1 views
2

私のプロジェクトでは、ネットワークとスレッドの管理にboost::asioを使用しています。私は現代のC++のいくつかの機能、例えば共有ポインタを使用したいと思います。既にBoostを使用している場合、BoostまたはC++ 11の標準ライブラリを好むべきですか?

2つの選択肢があります:boost::shared_ptr、私は既にBoostを使用しているので、std::shared_ptrはC++ 11コンパイラを使用しています。限り、私はそれらが基本的に同等であることを理解する限り、彼らはお互いに互換性がありません。

外部依存関係を無意識に使用しないために、標準ライブラリコンポーネントをBoostよりも優先するべきだと読んだことがあります。しかし、私はまだBoostを使用しています(少なくとも、ASIOを標準ライブラリに統合することを決定するまで)、その依存関係は依然として必要です。

共有ポインタは一例であり、この質問等は、そのようなfunctionbindthreadなどの標準ライブラリはブーストから引き継いだすべての機能に適用され

の好ましい実施である私の状況を、考えます機能?他のBoostコンポーネントや標準ライブラリコンポーネントを使用する際に、特にBoostや標準ライブラリのバージョンを使用する必要がある場合は、選択肢に問題がありますか?

+0

標準のlibから同じものを得ることができるときに、boostオプションを使用する理由は何でしょうか?私は何も知らない – user463035818

+0

意見に基づいていますか?おそらく私は独断的な古い猫ですが、反対の意見は妥当性がありません。したがって、答えは具体的です。 – Bathsheba

+0

標準の使用についての意見が標準的な意見である場合、それは単に標準ではないでしょうか? – AOK

答えて

6

ブーストは、将来のC++標準規格のデファクトフィーダーですが、それはあなたがC++標準ライブラリオーバーブーストを選択した場合は、常に互換性の切断のなすがままにされているように、標準化さないです。 (例として、Boost Spiritの歴史的な変更点を参照)。

したがって、可能であれば、常にC++標準ライブラリに移行するためのビューでコードを作成してください。

コンパイラの最適化は、C++標準ライブラリ関数でも簡単に行うことができます。これは、その正確な動作が標準によって定義されているためです。

関連する問題