5

C++11、C++14 以降では、Boost ライブラリが実際の言語標準 (または標準の一部になる可能性が高い TS ドキュメント) に採用/組み込まれていることに気付きました。 : Boost.optional、Boost.Any、Boost のスレッド ライブラリ、スマート ポインタなど。

これらのライブラリは現在、古いバージョンの言語標準を使用する C++ コードで使用するためだけに維持されていますか、それとも追加の用途がありますか? 具体的には、それらのいくつかは、C++ 標準化団体の選択に対する代替のセマンティック バリアントと見なされますか?

4

2 に答える 2

3

Boost と標準バージョンの違いの 1 つは、Boost には非推奨の機能 (議論と経験の結果、問題があると判断され、標準に追加されなかった設計側面) または標準への拡張機能 (Boost にはよ​​り多くの機能があるため) がある可能性があることです。標準よりも柔軟性が高く、標準に含まれていない機能があります)。

たとえば、Boost.Thread のドキュメントには、標準ライブラリと比較して、いくつかの非推奨と拡張機能がリストされています。

ニーズによっては、これらが標準よりも Boost を使用する正当な理由になる場合があります。

于 2015-07-25T20:14:15.030 に答える
1

私はBoostプロジェクトで働いていませんが、これらの機能は予見可能な将来にわたって維持されるので、何らかの理由で古い標準を使用する人がいると思います(一般的な理由は「プロジェクト全体が. C++03" または "コンパイラ X バージョン ABC を使用しており、新しいコンパイラ バージョン DEF でのテストについて心配しています")。プロジェクトの「顧客」が多ければ多いほど、物事を徐々に更新し、絶対に必要でない限り古い動作を変更したり、古い機能を削除したりしないことが重要になります。

もちろん、これらの機能は、C++11 または C++14 を使用する「最新の C++」アプリケーションでも使用できます (また、セマンティクスや構文が微妙に異なる場合もあるため、「最新の C++」を使用するには変更が必要です)。 C++」バリアントは、「#includeそのブーストを削除する」以上のものです)。何かを行うための新しい方法があるからといって、すべてのコードライターがすぐにすべてのコードをその方法で使用するように変更するわけではありません...したがって、「古い」方法の使用は依然として発生し、それが行われた後もかなりの期間存在します。採用されました。また、ソースコードにさらに変更を加える必要がある微妙な違いがある場合もあるため、より多くの「思考/入力」が必要になります。つまり、変更が発生する可能性が低くなります。それが単なる「置き換え」のboost::thread場合std::thread関連する他のコードを変更する必要がある場合 (引数の順序の変更、物事の構文/意味の微妙な変更など) は、「これを解決するための適切な作業」であり、通常はこれを解決する必要があります。開発チームでの優先度が低くなることを意味します(特に、「利益をあまり与えていない」場合)

于 2015-07-25T11:17:35.167 に答える