Ответ 1
Потому что в том же параграфе также упоминается, что this
является prvalue
( "чистое значение" ).
Примеры, упомянутые в стандарте для чистого значения rvalue, являются результатом вызова функции, которая не возвращает ссылку, или литералов, таких как 1
, true
или 3.5f
. this
-pointer не является переменной, он больше похож на литерал, который расширяется до адреса объекта, для которого вызывается функция ([class.this]). И, как, например, literal true
имеет тип bool
, а не bool const
, this
имеет тип X*
и не X*const
.