C ++ 11 ввел новые категории значений, одна из них xvalue
.
Это объяснено Страуструпом как-то вроде (im
категория): "этозначение, которое имеет идентичность, но может быть перемещено из ".
Другой источник, cppreference объясняет:
glvalue - это выражение, оценка которого определяетидентификатор объекта, битового поля или функции;
И xvalue
- это glvalue
, так что это утверждение верно и для xvalue
.
ТеперьЯ думал, что если xvalue
имеет идентичность, то я могу проверить, ссылаются ли два xvalue
на один и тот же объект, поэтому я беру адрес xvalue
.Как оказалось, это не разрешено:
int main() {
int a;
int *b = &std::move(a); // NOT ALLOWED
}
Что значит, что xvalue
имеет идентичность?