たとえば、boost::function
ほぼ完全に に移動std::function
します。boost::shared_ptr
しかし、私は見つけることができませんstd::any
か?なんらかの理由で名前が変更されたのか、それとも新しい標準にまったく配置されなかったのか?
質問があったので、 C++14 標準から投票されたオプション機能として std::experimental::any に進みました。
その後、少なくとも GCC 5.1 で実装されました。
その後、この機能は C++17 で標準化され、std::anyになりました。C++17 のstd::variantも参照してください。タイプ セーフな共用体は、限定された既知の型の代替のいずれかを保持するか、空です (ヒントについては remy-lebeau に感謝します)。
boost のすべてのライブラリが標準に組み込まれているわけではありません (コンポーネントが削除されているものでも)。一般に、委員会は標準ライブラリへの追加に関してはかなり保守的です (なぜなら、組み込みが間違っていた場合 (たとえば、より良い代替手段があるため) 後で何かを削除することはほとんど不可能だからです)。
boost::function
そしてboost::shared_ptr
、それらはすでにtr1
. boost::any
一方、カットを行いませんでした。ただし、後で標準ライブラリに含まれる可能性があります (たとえば、次のテクニカル レポートでは、こちらを参照してください)。あると便利ですがboost::any
、例ほど重要であるとは評価しませんshared_ptr
。
結論:boost::any
委員会はそれを含める差し迫った必要性を見ていないので、C++ 11の一部ではありません
デフォルトの立場は、ライブラリが含まれるように提出され、委員会を通過しない限り、ライブラリは新しい標準に含まれないというものだったと思います。
boost::any が提出されたかどうかはわかりません。おそらくそうではありません。ただし、boost::any は引き続き使用できます。
私の推測では、C++11 ではブースト ライブラリが書き直され、一部は冗長と見なされ、他のものはムーブ セマンティクス、初期化子リスト、および自動を使用するように変更され、C++11 機能を備えた C++11 スタイルで記述されます。
ほとんどの場合、新しいライブラリはすべて C++11 になりますが、多くのライブラリはまだ C++11 コンパイラに切り替えていないため、既存のブースト パッケージはしばらくの間利用できるように維持されます。また、すべての主要なコンパイラによって実装されている C++11 の機能のみが最初にパッケージに組み込まれると思います。
これはおそらく、stackoverflow よりもプログラマーにとっての質問であり、comp.std.c++.moderated および boost メーリング リストにとってはさらに良いことです。