Удалить объекты неполного типа

25
задан Brian Tompsett - 汤莱恩 11 July 2015 в 23:02
поделиться

2 ответа

Из стандартного [expr.delete]:

Если удаляемый объект имеет неполный тип класса в точке удаления, а полный класс имеет нетривиальный деструктор или функцию освобождения, поведение не определено.

Итак, это UB, если есть нетривиальные вещи, и это нормально, если нет. Предупреждения не являются необходимыми для UB.

21
ответ дан lrineau 11 July 2015 в 23:02
поделиться

Это неопределенное поведение и распространенная ошибка при реализации шаблона pImpl. Насколько я знаю, просто нет такого понятия, как предупреждение, которое должен выдавать компилятор. Предупреждения являются выборными; они там, потому что автор компилятора думал, что они будут полезны.

3
ответ дан Karl Knechtel 11 July 2015 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: