所有右值引用都是左值吗?
Are all rvalue-references lvalues?
给定代码:
void foo( int&& i )
{
int* p = &i;
}
i
是左值。事实上,我可以通过 &
运算符获取它的地址。
这个说法正确吗?
表达式的值类别已从其类型中完全删除。
在您的例子中,表达式 i
是一个左值,但 std::move(i)
是一个右值。右值引用类型的表达式可以是左值或右值。
给定代码:
void foo( int&& i )
{
int* p = &i;
}
i
是左值。事实上,我可以通过 &
运算符获取它的地址。
这个说法正确吗?
表达式的值类别已从其类型中完全删除。
在您的例子中,表达式 i
是一个左值,但 std::move(i)
是一个右值。右值引用类型的表达式可以是左值或右值。