xvalue < /strong>
Следующие выражения являются xvalue Expressions: < /p>
- < Li>a.m, член объекта, где a-это rvalue, а m-это не St-Static data-член; /> < /ul>
< /blockquote>
Кроме того, это написано на одной и той же странице < /p>
c ++ 11
с введением семантики движения в C ++ 11, категории значений были пересмотрены, чтобы характеризовать два независимых объекта экспрессии [5]:
p>
p> p>
P> P> p> p> PR>:
p> p> p>
p> p> p>
p> PRE определили. Identity : можно определить, относится ли выражение к той же сущности, что и другое выражение, например, путем сравнения адресов объектов или функций, которые они идентифицируют (получено прямо или косвенно);
имеет идентичность. Я могу применить определение идентификации в случае STD :: MOVE (a) , поскольку оно представляет тот же объект, что и . Хотя мы не можем напрямую принимать его адрес, но мы можем использовать ссылки на RVALUE. Как следующее < /p>Код: Выделить всё
xvalueКод: Выделить всё
#include int main() { int a = 5; int&& r_ref = std::move(a); std::cout xvalue < /strong> Следующие выражения представляют собой выражения xvalue: < /p> Любое выражение, которое проектирует временную объект, после временной объекта; C ++ 17) [/list] Подробнее здесь: [url]https://stackoverflow.com/questions/79656347/why-is-the-member-of-object-expression-an-xvalue-not-prvalue[/url]