为什么我可以为 rValue 字符串赋值?
Why can I assign something to rValue string?
如我所料,这段代码无法编译,因为 move 给了你 rValue 而你不能给 rValue 赋值:
int a, b;
move(a) = b;
问题是为什么下面的代码可以编译?
string a, b;
move(a) = b;
原因可能有点意外。第一种形式是内置赋值,它确实不适用于右值引用。
第二个说法其实是move(a).operator=(b)
。那是一个函数调用。您可以在右值上调用函数,即使这些函数的名称有些不寻常。
如我所料,这段代码无法编译,因为 move 给了你 rValue 而你不能给 rValue 赋值:
int a, b;
move(a) = b;
问题是为什么下面的代码可以编译?
string a, b;
move(a) = b;
原因可能有点意外。第一种形式是内置赋值,它确实不适用于右值引用。
第二个说法其实是move(a).operator=(b)
。那是一个函数调用。您可以在右值上调用函数,即使这些函数的名称有些不寻常。