Связанный документ не является нормативным.В некотором смысле это, кажется, описывает, какими должны быть ценности, а не то, что они были в то время.В C ++ 17 стало верно, что prvalues не имеют идентичности - но в C ++ 11 и C ++ 14 это было не совсем так.
В C ++ 11 и C ++14, значение типа имеет идентификатор, потому что, как вы заметили, можно вызывать метод для него, а также есть способы наблюдать его адрес.Аналогично, значения типа массива имеют идентичность.Значения скалярного типа ( например, целочисленные литералы) не имеют идентичности.Привязка их к ссылкам вызовет материализацию временного объекта, который теперь имеет адрес, но больше не наблюдается как prvalue.
В C ++ 17 prvalues не имеют идентичности и не являются временными объектами,но вместо этого это выражения, которые можно использовать для создания временных (или не временных) объектов.Переход от значения к объекту эффективно «вызывает» значение.Временный объект можно наблюдать только как xvalue.