<分区>
我偶然发现了这样的语法:
int&& move(int&& x)
{
return x;
}
这应该是 std::move
函数的实现方式,但我不太明白返回类型 (&&) 的实际含义。
我用谷歌搜索了一下,没有找到答案,有人可以给我解释一下吗?
编辑:
我的大部分困惑来自于函数的返回值已经是右值,所以我不明白 && 可以在那里改变什么。不确定我是否有道理。
<分区>
我偶然发现了这样的语法:
int&& move(int&& x)
{
return x;
}
这应该是 std::move
函数的实现方式,但我不太明白返回类型 (&&) 的实际含义。
我用谷歌搜索了一下,没有找到答案,有人可以给我解释一下吗?
编辑:
我的大部分困惑来自于函数的返回值已经是右值,所以我不明白 && 可以在那里改变什么。不确定我是否有道理。
最佳答案
发件人:http://www.stroustrup.com/C++11FAQ.html#rval
&&
表示“右值引用”。右值引用可以绑定(bind)到右值(但不能绑定(bind)到左值):
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
关于c++ - 双符号返回类型是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25230082/