所有右值引用都是左值吗?

Are all rvalue-references lvalues?

给定代码:

void foo( int&& i )
{
    int* p = &i;
}

i 是左值。事实上,我可以通过 & 运算符获取它的地址。

这个说法正确吗?

表达式的值类别已从其类型中完全删除。

在您的例子中,表达式 i 是一个左值,但 std::move(i) 是一个右值。右值引用类型的表达式可以是左值或右值。