Annex F (informative) Core undefined behavior [ub]

F.3 [expr]: Expressions [ub.expr]

F.3.31[ub:expr.add.sub.diff.pointers]
Specified in: [expr.add]

Subtracting pointers that are not part of the same array has undefined behavior.
[Example 1: #include <cstddef> void f() { int x[2]; int y[2]; int* p1 = x; int* p2 = y; std::ptrdiff_t off = p1 - p2; // undefined behavior, p1 and p2 point to different arrays } — end example]