相关疑难解决方法(0)

了解右值参考

我认为我对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呢?)

c++ rvalue-reference c++11

16
推荐指数
3
解决办法
2858
查看次数

标签 统计

c++ ×1

c++11 ×1

rvalue-reference ×1