std::bind
の使用方法を説明する簡単な例を次に示します。
引数が 3 つある関数 f3(x, y, z) があるとします。次のように定義された 2 つの引数の関数が必要ですf2(x,y) = f3(x,5,y)
。C++ では、次のように簡単に実行できますstd::bind
。
auto f2 = std::bind(f3, _1, 5, _2);
この例は私には明らかです。std::bind
関数を最初の引数として取り、次に n 個の他の引数を取ります。ここで、n は の最初の引数として取り込まれる関数の引数の数ですstd::bind
。
ただし、バインドの別の使用法を見つけました。
void foo( int &x )
{
++x;
}
int main()
{
int i = 0;
// Binds a copy of i
std::bind( foo, i ) (); // <------ This is the line that I do not understand.
std::cout << i << std::endl;
}
foo
には1 つの引数があり、std::bind
それが に設定されていることは明らかですi
。しかし、なぜ の後にもう 1 組のかっこを使用するの(foo, i)
でしょうか。そして、なぜ出力を使用しないのstd::bind
ですか? つまり、なぜ私たちは持っていないのauto f = std::bind(foo, i)
ですか?