boost::bind
の会話中に、std::bind1st
がC++ 03に存在することが判明しましたが、ほとんど使用できません。なぜstd :: bind1stは「ほとんど使用不可能」と考えられるのですか?
私はこれをバックアップするための何かを見つけることができません。
The boost::bind
documentationは言う:
ブースト::バインドは 標準関数のstd :: bind1stと のstd :: bind2ndの一般化です。任意の 関数オブジェクト、関数、関数 ポインタ、およびメンバ関数 ポインタをサポートし、任意の 引数を特定の値にバインドするか、 入力引数を任意の 位置にバインドできます。 バインドは、関数オブジェクトに何も指定しません。特に 、それは のresult_type、first_argument_typeと second_argument_type標準 のtypedefを必要としません。おそらく、これらの制限は
std::bind1st
に適用されます行うことを示唆している
。 std::bind1st
/std::bind2nd
からboost::bind
の利点が何であるか引数の数に明らかな制限以外に
std::bind1st
がC++ 03で「ほとんど使えない」というアサーションにメリットはありますか?
'ptr_fun'は、指定された関数ポインタをラップするAdaptable Binary Functionを与えることで、最初の問題を解決することに注意してください。しかし、残りの部分は解決しません。 'ptr_fun'を呼び出すのは簡単ですが、やや難しいことを思い出してください;-) –