为什么我可以为rValue字符串赋值?

时间:2016-02-26 10:05:37

标签: c++11 c++-standard-library

正如我所料,这段代码没有编译,因为move给你rValue,你不能为rValue分配任何东西:

int a, b;
move(a) = b;

问题是为什么下面的代码会编译?

string a, b;
move(a) = b;

1 个答案:

答案 0 :(得分:2)

原因可能是有点慌张。第一种形式是内置赋值,它确实不适用于右值引用。

第二个陈述实际上是move(a).operator=(b)。这是一个函数调用。你可以在rvalues上调用函数,即使函数有一些不同寻常的名字。