我想澄清一下这个特殊情况:
class Test
{
Test& operator=(const Test& copy)
{
...
}
Test() = default;
}
Test a;
Test b;
b = a; //Is "a" converted to an rvalue?
"a" 是一个左值,但它现在是赋值的右手操作数。这是否意味着它被转换为右值?
此代码无法编译:
class Test
{
Test& operator=(Test&& copy)
{
...
}
Test() = default;
}
Test a;
Test b;
a = b; //Error
但是这个可以:
class Test
{
Test& operator=(Test& copy)
{
...
}
Test() = default;
}
Test a;
Test b;
a = b; //OK
由于左值引用不能绑定到右值,这是否意味着这里没有发生转换?如果是这种情况,什么时候会发生隐式左值到右值的转换?(除了具有原始类型的 operator+ 的情况)