Карточка Middle Move-семантика обновлено

lvalue, prvalue, xvalue

Вопрос

Дайте примеры lvalue, prvalue и xvalue.

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

lvalue: x, arr[i], p, std::cout, вызов функции, возвращающей T&, именованная T&&. prvalue: 42, a + b, T{}, вызов функции, возвращающей T по значению, this. xvalue: std::move(x), staticcast<T&&(x), вызов функции, возвращающей T&&, член xvalue-объекта.

Ответ

lvalue: x, arr[i], *p, std::cout, вызов функции, возвращающей T&, именованная T&&. prvalue: 42, a + b, T{}, вызов функции, возвращающей T по значению, this. xvalue: std::move(x), static_cast<T&&>(x), вызов функции, возвращающей T&&, член xvalue-объекта.

Разбор

lvalue: x, arr[i], *p, std::cout, вызов функции, возвращающей T&, именованная T&&. prvalue: 42, a + b, T{}, вызов функции, возвращающей T по значению, this. xvalue: std::move(x), static_cast<T&&>(x), вызов функции, возвращающей T&&, член xvalue-объекта.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.