Для вычитания указателей i и j элементам одного и того же объекта массива примечание в [expr.add # 5] гласит:
[Примечание. Если значение i-j не находится в диапазоне представляемых значений типа
std::ptrdiff_t, поведение не определено. - конечная нота]
Но учитывая [support.types.layout # 2], в котором говорится, что (внимание мое):
- Тип
ptrdiff_tпредставляет собой целочисленный типptrdiff_t, определенный реализацией, который может содержать разность двух индексов в объекте массива, как описано в [expr.add].
Возможно ли даже, что результат ij не должен находиться в диапазоне представимых значений ptrdiff_t?
PS: Прошу прощения, если мой вопрос вызван моим плохим пониманием английского языка.
EDIT: Related: Почему максимальный размер массива "слишком велик"?