4

std :: bindを正しく理解していれば、もう1つの厄介なエラーメッセージが表示されます。引数は、指定_1されていない引数を定義するのが好きですか?右?次の行をよく考慮してください。

std::function<bool(value_type, const std::string &)> 
                             func(std::bind(&Pred, _1, "name"));

これはうまくいくはずですよね?これはstd::find_if()関数に使用されます。そのため、最初の引数は値型で、2番目は文字列である必要があります。

ただし、Visual Studio 2010は、次のエラーメッセージでこれについて文句を言います。

エラーC2065:'_1':宣言されていない識別子

それは奇妙なことです。ビジュアルスタジオで「最初の議論は束縛されていません」とどうやって言うことができますか。Predは、value_type, const std::string&引数としてブール値を返す単純な関数です。

4

1 に答える 1

12

あなたの場合、あなたはこれが欲しいです:

std::function<bool(value_type, const std::string &)> 
                         func(std::bind(&Pred, std::placeholders::_1, "name"));
于 2013-03-12T11:18:00.733 に答える