std::bind
N3225のサブセクションの説明を読んで行き詰まってい20.8.10.1
ます。以下は印刷する必要があると書かれていますが、それはその引数をコピーすることになっているので、印刷する必要1
があると思いました。渡された引数を参照したい場合は、を使用する必要がありますよね?bind
0
std::ref
void f(int &a) { a = 1; }
int main() {
int a = 0;
std::bind(f, a)();
std::cout << a << std::endl;
}
GCCの出力0
は、私が物事がうまくいくと思ったことに同意します。しかし、N3225は、std::bind(f, a1)
によって呼び出されたときに、を呼び出す呼び出しラッパーを返すと言っていwrapper()
ますINVOKE(f, v1)
。ここで、 (v1
私a
が渡した引数、つまり、binds
完全な転送パラメーターであるの着信パラメーターを使用しますstd::forward<A1>(a1)
)。
INVOKE(f, a)
20.8.2から。で定義されf(a)
ます。したがって、これは、返された呼び出しラッパーへの呼び出しが元の引数を渡すことを定義します。私は何が欠けていますか?