我偶然发现了这样的语法:
int&& move(int&& x)
{
return x;
}
这应该是std::move
函数的实现方式,但我不太明白返回类型(&&)实际意味着什么。
我用google搜索过,未能回答错误,有人可以向我解释一下吗?
编辑:
我的大部分困惑都来自于一个函数的返回已经是一个右值,所以我不明白什么&&可以改变那里..不确定我是否有意义。
答案 0 :(得分:4)
在这种情况下,move函数使用所谓的rvalue references
- 相对较新的C ++特性。在this article中很好地解释了它。
答案 1 :(得分:3)
来自:http://www.stroustrup.com/C++11FAQ.html#rval
&&
表示"右值参考"。右值引用可以绑定到右值(但不能绑定到左值):
X a;
X f();
X& r1 = a; // bind r1 to a (an lvalue)
X& r2 = f(); // error: f() is an rvalue; can't bind
X&& rr1 = f(); // fine: bind rr1 to temporary
X&& rr2 = a; // error: bind a is an lvalue