Для вычитания указателей 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: Почему максимальный размер массива "слишком велик"?