2012-02-08 9 views
19

は、ほぼ完全std::functionに移動しても同じことがboost::shared_ptrC++ 11標準はboost :: anyのようなものを提供していますか?たとえば<code>boost::function</code>ため

であるしかし、私はstd::anyを見つけることができませんか? 名前が変更されたのは何ですか?

+13

号(フィラー) –

+0

ていないすべてのものは、しかし、何がそれを使用してからあなたを防ぐないはstdに移動されましたブースト中。私はいくつかのブーストライブラリがC++ 11用に書き直されているかもしれないと思っています。 – CashCow

答えて

15

boostからのすべてのライブラリが標準になるわけではありません(コンポーネントが削除されている可能性もあります)。一般的には、標準ライブラリに追加することについては、かなり控えめです(これは、より良い選択肢があるために、ミスを含んでいれば後で削除することは不可能です)。

boost::functionおよびboost::shared_ptrここでは、すでにtr1の部分が含まれているため、かなり多く含まれています。一方、boost::anyはカットを作成しませんでした。しかし、後の標準ライブラリ(例えば、次の技術報告書のhere参照)に含まれる可能性があります。 boost::anyはいいですが、私はそれを非常に重要なものとして評価しません。 shared_ptr

結論:boost::anyは、委員会が

+2

) )も標準化されており、C++ 17に登場します。 –

3

それを含むように任意の差し迫った必要性を見ていないので、私はデフォルトの位置は、ライブラリが含まれないであろうということだったと思う、C++ 11の一部ではありませんそれが含まれるように提出されてから委員会に合格しなければ、

boost :: anyが送信されたかどうかはわかりません。おそらくそうではありません。しかし、あなたはまだboost :: anyを使うことができます。

私の推測では、C++ 11のブーストライブラリは書き直され、一部は重複していると見なされ、その他は移動セマンティクス、イニシャライザリスト、オートを使用して変更され、C + +11の機能

ほとんどすべての新しいライブラリはC++ 11になりますが、既存のブーストパッケージは、C++ 11コンパイラにまだ切り替えられていないので、しばらく利用可能になります。私は、すべてのメインコンパイラによって実装されているC++ 11の機能だけが、最初はパッケージに入っていくものと推測します。

これはおそらくstackoverflowよりもプログラマーにとっては疑問であり、comp.std.C++のメーリングリストとメーリングリストの方が優れています。

16

質問がありましたので、私たちはoptionalの機能をC++ 14標準から抜粋してstd :: experimental :: anyに向けて進めました。

GCC 5.1では少なくともimplementedでした。

この機能はその後C++で標準化され、std::anyになりました。限定された既知の型のいずれかを保持する型セーフな共用体の場合は、C++ 17のstd::variantも参照してください。空の場合(tipのおかげでremy-lebeauになります)。

+2

['std :: variant'](http://en.cppreference.com/w/cpp/utility/variant)(' boost :: variant'に似ています。 –

関連する問題