c++ - 双符号返回类型是什么意思?

标签 c++ c++11 move ampersand

<分区>

我偶然发现了这样的语法:

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/

相关文章:

c++ - FIFO block 程序直到其他进程读取

c++ - 在 C++ 中将数据从 HDF5 加载到 vector

c++ - 计算 Action 会导致海森堡效应吗?

c++ - 为什么 move 构造函数只被调用一次?

c++ - 在 pair.first 上使用 std::move 是否会使 pair.second 无效?

c++ - 用于放入在一组函数中传递的参数的结构

c++ - 使用 RedrawWindow 或 SendMessage(WM_PAINT) 重绘后窗口出现故障

c++ - 继承构造函数是否适用于 C++0x 中的模板?

c++0x 线程初始化

c++ - clang 因 std::async 中的 char * 异常而崩溃