std::bindN3225のサブセクションの説明を読んで行き詰まってい20.8.10.1ます。以下は印刷する必要があると書かれていますが、それはその引数をコピーすることになっているので、印刷する必要1があると思いました。渡された引数を参照したい場合は、を使用する必要がありますよね?bind0std::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)ます。したがって、これは、返された呼び出しラッパーへの呼び出しが元の引数を渡すことを定義します。私は何が欠けていますか?