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)ですか?