От 4,1 / 2
Значение, содержащееся в объекте, указанном lvalue, является Результат получен. Когда преобразование lvalue в rvalue происходит в пределах операнд sizeof (5.3.3) значение, содержащееся в ссылочном объекте не доступен, так как этот оператор не оценивает свой операнд.
Из любопытства, мне было интересно, относится ли то же самое к if, ибо, в то время как операторы, т. Е. Lvalue преобразуются в rvalue при оценке результата оператора?
Да.Без преобразования lvalue-to-rvalue он не может прочитать его значение .
lvalue-to-rvalue
Говоря в общих чертах, представьте себе lvalue как своего рода контейнер и rvalue в качестве значения, содержащегося в контейнере.
C ++ 03, раздел §3.10 / 7 гласит:
Всякий раз, когда значение lvalue появляется в контексте, где ожидается значение rvalue, значение lvalueпреобразуется в значение r;см. 4.1, 4.2 и 4.3.
Прочитайте его вместе с, §4.1 / 2 (ваша цитата),
Значение, содержащееся в объекте, обозначенном lvalueявляется результатом rvalue.
Тема по теме:
Ответ - да.
Когда ожидается значение bool, также применяется преобразование.Пусть test будет переменной, чтобы увидеть пример:
if( test )
R-значение теста, true или false, оценивается внутри if.