右辺値の参照について、私がよく理解していないことがあると思います。以下がエラーでコンパイルに失敗するのはなぜですか(VS2012)'foo' : cannot convert parameter 1 from 'int' to 'int &&'?
void foo(int &&) {}
void bar(int &&x) { foo(x); };
int &&barからfooに渡されたときに型が保持されると思いました。int関数本体の中で一度変換されるのはなぜですか?
私は答えが使用することであることを知っていますstd::forward:
void bar(int &&x) { foo(std::forward<int>(x)); }
だから多分私は理由を明確に把握していないだけです。(また、なぜstd::moveですか?)