我认为我对rvalue引用并不十分了解.为什么以下错误无法编译(VS2012)'foo' : cannot convert parameter 1 from 'int' to 'int &&'?
void foo(int &&) {}
void bar(int &&x) { foo(x); };
Run Code Online (Sandbox Code Playgroud)
我会假设int &&从bar传递到foo时将保留该类型.为什么它会int在函数体内转换成一次?
我知道答案是使用std::forward:
void bar(int &&x) { foo(std::forward<int>(x)); }
Run Code Online (Sandbox Code Playgroud)
所以也许我只是没有清楚地掌握原因.(另外,为什么不std::move呢?)