I’ve always wondered: isn’t ptrdiff_t supposed to be able to hold the difference of any two pointers by definition? How come it fails when the two pointers are too far? (I’m not pointing at any particular language… I’m referring to all languages which have this type.)
(e.g. subtract the pointer with address 1 from the byte pointer with address 0xFFFFFFFF when you have 32-bit pointers, and it overflows the sign bit…)
No, it is not.
Note the number of times
undefinedappears in the paragraph. Also note that you can only subtract pointers if they point within the same object.