Это удаление, которое сначала проверяет, завершен ли тип. Аналогично boost::checked_delete
.
Идея состоит в том, чтобы сгенерировать ошибку компиляции при попытке удалить неполный тип (, который имеет хорошие шансывызывая неопределенное поведение, в зависимости от типа ).
Например (для удобства используется boost::checked_delete
, поскольку я не знаю специфику класса, членом которого является ваш delete_
, но они в основном одинаковы):
struct X;
void foo(X* x) {
boost::checked_delete(x);
}
Обратите внимание, что обычный delete x;
может вызывать предупреждение от компилятора (в зависимости от вашего компилятора), но это не гарантируется.