我对以下代码感到困惑:
#include <iostream>
int main()
{
int x{};
int&& rvx = static_cast<int&&>(x);
++rvx;
std::cout << x << std::endl;
}
它的输出是1
。我不明白这是如何工作的。static_cast
应该将左值转换x
为 xvalue,然后将其分配给rvx
. 为什么递增rvx
会导致变化x
?这是因为转换后的左值到右值本质上位于相同的内存位置,但现在它只是被认为是右值?我的印象是(这可能是错误的)演员不知何故从它的论点中创造了一个临时的。