Заголовок<<boost/checked_delete.hpp>>определяет два шаблона функций<checked_delete>и<checked_array_delete>и два шаблона классов<checked_deleter>и<checked_array_deleter>.
C++ Стандарт позволяет в пункте 5.3.5/5 удалять указатели неполных типов классов с помощью выражения удаления. Когда класс имеет нетривиальный деструктор, или оператор класса удаляет, поведение не определено. Некоторые компиляторы выдают предупреждение при удалении неполного типа, но, к сожалению, не все это делают, и программисты иногда игнорируют или отключают предупреждения.
Особенно трудным является случай, когда деструктор умного указателя, такой как<boost::scoped_ptr<T>::~scoped_ptr>, инстанцируется с неполным типом. Это часто может привести к молчанию, трудно отслеживать неудачи.
Поставляемые шаблоны функций и классов могут использоваться для предотвращения этих проблем, поскольку они требуют полного типа и вызывают ошибку компиляции в противном случае.
Шаблоны функций<checked_delete>и<checked_array_delete>первоначально были частью<<boost/utility.hpp>>, и документация признала Бемана Доуса, Дэйва Абрахамса, Владимира Пруса, Райнера Дейка, Джона Мэддока и других в качестве авторов.