Question

From 4.1/2

The value contained in the object indicated by the lvalue is the rvalue result. When an lvalue-to-rvalue conversion occurs within the operand of sizeof (5.3.3) the value contained in the referenced object is not accessed, since that operator does not evaluate its operand.

Out of curiosity, I was wondering, does the same applies to the if, for, while statements, i.e lvalue is converted to rvalue when the result of statement is evaluated?

Was it helpful?

Solution

Yes. Without lvalue-to-rvalue conversion, it cannot read it's value.

Loosely speaking, think of lvalue as some sort of container, and rvalue as the value contained in the container.

C++03, section §3.10/7 reads,

Whenever an lvalue appears in a context where an rvalue is expected, the lvalue is converted to an rvalue; see 4.1, 4.2, and 4.3.

Read it along with, §4.1/2 (your quotation),

The value contained in the object indicated by the lvalue is the rvalue result.

Related topic:

OTHER TIPS

The answer is yes.

When a bool rvalue is expected, the conversion also is applied. Let test be a variable to see an example:

if( test )

Rvalue of test, true or false, is evaluated inside the if.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top