在 2018-08-20 16:27, Richard Biener 写道:
> Btw, I can't find wording in the standards that nullptr + 1 is
> invoking undefined behavior,
> that is, that pointer arithmetic is only allowed on pointers pointing
> to a valid object.
> Any specific pointers?
> 

The C standard only defines addition and subtraction for pointers 
pointing to elements and past-the-end positions of arrays [1]. As a null 
pointer ipoints to nothing, the 'otherwise' clauses apply, rendering the 
behavior undefined.

The C++ standard has a couple of similar paragraphs [2]. In addition to 
that, there is a special case for null pointers and the integer zero 
[3]. There is no special case for null pointers and integers other than 
zero.

[1] ISO/IEC WG14 N1570, 6.5.6 Additive operators, 8, 9.
[2] ISO/IEC WG21 N4750, 8.5.6 Additive operators, 4, 5
[3] ISO/IEC WG21 N4750, 8.5.6 Additive operators, 7


-- 
Best regards,
LH_Mouse

Reply via email to