次のコードに困惑しています。
#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
ですか? これは、変換された左辺値から右辺値が本質的に同じメモリ位置にあるためですが、現在は右辺値と見なされているためですか? 私は、どういうわけかキャストがその引数から一時的なものを作成するという印象を受けました (これはおそらく誤りです)。