, если p указывает на элементы i -th a Array объект x n код> кода> код> код> код> кода> код> код> кода> код> код> код> код> код> код> код> код> код> код> код> код> код> код или вычитается следующим образом:
-p + j и j + p укажите на i + j -th элемент x if 0 ≤ i + j < /blockquote>
Как указано там, кажется, что арифметика указателя, такую как Ptr+1 < /code> /ptr ++ < /code>, является четко определенной только в том случае, если PTR указывает на элемент массива (или элемент прошлого-конечности того же массива). Мой вопрос: что, если элемент заостренного массива уже был уничтожен до выполнения арифметики? Чтобы быть ясным, я спрашиваю только о арифметическом этапе (продвижение указателя), а не о последующем доступе к уничтоженному объекту. < /P>
Например, < /p>
Код: Выделить всё
template
constexpr // since C++20
void destroy(ForwardIt first, ForwardIt last)
{
for (; first != last; ++first)
std::destroy_at(std::addressof(*first));
}
Я задаюсь вопросом, является ли этот указатель арифмет хорошо определяется или не определено (ub). .>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ay-element
Мобильная версия