标签: c++11 c++-standard-library
正如我所料,这段代码没有编译,因为move给你rValue,你不能为rValue分配任何东西:
int a, b; move(a) = b;
问题是为什么下面的代码会编译?
string a, b; move(a) = b;
答案 0 :(得分:2)
原因可能是有点慌张。第一种形式是内置赋值,它确实不适用于右值引用。
第二个陈述实际上是move(a).operator=(b)。这是一个函数调用。你可以在rvalues上调用函数,即使函数有一些不同寻常的名字。
move(a).operator=(b)