ISO/IEC JTC1/SC22/WG14 N721 Changes adopted by WG14 Unary * operator - a fix Clive D.W. Feather In 6.3.3.2, change the first constraint (paragraph 1) from: The operand of the unary & operator shall be a function designator or an lvalue that designates an object that is not a bit-field and is not declared with the /register/ storage-class specifier. to: The operand of the unary & operator shall be a function designator, | the result of a [] or unary * operator, or an lvalue that designates an object that is not a bit-field and is not declared with the /register/ storage-class specifier. Add to the end of paragraph 3: If the operand is the result of a unary * operator, neither that operator nor the & operator are evaluated, and the result shall be as if both were omitted, even if the intermediate object does not exist, except that the constraints of the operators still apply and the result is not an lvalue. Similarly, if the operand is the result of a [] operator, neither the & operator nor the unary * that is implied by the [] are evaluated, and the result shall be as if the & operator was removed and the [] operator was changed to a + operator. Change the first sentence of footnote 54 to: Thus &*E is equivalent to E (even if E is a null pointer), and &(E1[E2]) to (E1+(E2)). In 6.3.6 paragraph 8, change the last sentence from: ... the behavior is undefined if the result is used as an operand of the unary * operator. to: ... the behavior is undefined if the result is used as an operand of a unary * operator that is actually evaluated.