1

私は自分のコードでboostをよく使用していますが、これまでのところ使用を控えていstd::tr1ます。ここで、これら2つが提供できるような、より洗練された関数ポインターが必要です。残念ながら、C+11はまだオプションではありません。boost::function特定のコンパイラー(7.1より前のVisual Studioには特別な移植可能な構文が必要)では扱いにくい場合があることを読みましたがstd::tr1::function、この主題に関する情報は見つかりませんでした。2つの間のメモリ使用量、速度、互換性に関して重要な違いはありますか?

編集:私は現在gcc 4.7を使用していますが、コードはVisual Studioでもコンパイルする必要があり、できれば2005のような少し古いバージョンでもコンパイルする必要があります

4

1 に答える 1

3

何を読みましたか?トリッキーとはどういう意味ですか?boost::function1<void, int>フォームではなくフォームのみをサポートするいくつかの古いコンパイラを参照していますboost::function<void(int)>か?

std::tr1::functionコンパイラによって提供される必要があるため、コンパイラがそれを提供する場合は、「トリッキー」ではなく、完全に機能する必要があります(それが意味するものは何でも)。

Boostの特定の実装と、実装ではないインターフェース仕様との間に違いがあるかどうかを尋ねるのは意味がありません。1つの実装はBoostに類似していて、実質的な違いはなく、別の実装は完全に異なる可能性があります。GCCstd::tr1::functionはBoost.Functionの作者によって提供されたので、非常によく似ています。

于 2012-07-30T20:24:28.503 に答える