$5.7 -
"[..] Для добавления оба операнда должны иметь тип арифметики или перечисления, или один операнд должен быть указателем на полностью определенный тип объекта, а другой должен иметь интегральный или перечисляемый тип.
2 Для вычитания должно выполняться одно из следующих условий: - оба операнда имеют тип арифметики или перечисления; или - оба операнда являются указателями на cv-квалифицированные или cv-неквалифицированные версии одного и того же полностью определенного типа объекта; или - левый операнд является указателем на полностью определенный тип объекта, а правый операнд имеет целочисленный или перечисляемый тип.
int main(){
int buf[10];
int *p1 = &buf[0];
int *p2 = 0;
p1 + p2; // Error
p1 - p2; // OK
}
Итак, мой вопрос в том, почему "добавление указателя" не поддерживается в С++, но "вычитание указателя" есть?