>>403
回答有難うございます。

一生懸命調べたところ、こんな記述を見つけました。Tがオブジェクト型の場合、(T &&)x のように cast すると、
結果は、右辺値にならずに xvalueになるようです。
でもそこから先は理解できてません。

https://stackoverflow.com/questions/40801765/is-it-an-rvalue-or-lvalue-after-a-cast

From expr.cast (this is applicable from C++11 and later)
C++ 11 以後の場合 :

The result of the expression (T) cast-expression is of type T.
式「(T)cast-expression」の結果は、T 型である。

The result is an lvalue if T is an lvalue reference type or an rvalue reference to function type and an xvalue if T is an rvalue reference to object type;
Tが関数型への左辺値参照/右辺値参照の場合は、結果は 左辺値で、
Tがオブジェクト型への右辺値参照の場合は、結果は xvalue である。

otherwise the result is a prvalue.
そのどちらでも無い場合、結果は、prvalue である。