На разных ресурсах нашел разные определения rvalue, lvalue. Как же правильно? right value или read value? left value или locator value?
Ответ Исходно речь шла про правую и левую части относительно оператора присваивания. Но правильного варианта такой простой расшифровки нет и быть не может. Термины так и останутся rvalue и lvalue. А вот какой в них вложен смысл чётко прописано в стандарте. Всё это образует категории выражений.
glvalue (“generalized” lvalue) Выражение, чьё вычисление определяет сущность объекта, битового поля или функции. prvalue (“pure” rvalue) Выражение, чьё вычисление инициализирует объект, битовое поле или вычисляет значение операнда оператора, с соответствии с контекстом использования. Например, литералы 42, true, nullptr за исключением строковых литералов, которые являются lvalue выражениями. xvalue (“eXpiring” lvalue) Это glvalue, которое обозначает объект или битовое поле, чьи ресурсы могут быть повторно использованы (обычно потому, что они находятся около конца своего времени жизни). Например, результат вызова std::move даёт выражение xvalue. lvalue Это glvalue, которое не является xvalue. Например, имя переменной, функции или члена-данных, независимо от их типа, даже переменная, имеющая тип rvalue-ссылки, образует выражение lvalue. rvalue Это prvalue или xvalue.
Таким образом любое выражение есть в первую очередь lvalue, xvalue или prvalue. rvalue - это уже обобщение.