Пока я пишу это, ваш текст говорит "Ссылка [здесь] [1]" без ссылки.
Но, по сути, стандарт позволяет вам delete
указатель на неполный тип, чтобы вы могли использовать знания, которых нет у компилятора, а именно, что деструктор типа ничего не делает.
std::auto_ptr
- это пример, где это является проблемой, особенно для идиомы PIMPL (печально известным примером неправильного понимания был GOTW Херба Саттера на PIMPL, где он неправильно использовал std::auto_ptr
). boost::shared_ptr
- это пример, где это не проблема (в общем). Это связано с тем, что конструктор boost::shared_ptr
хранит функцию удаления, а полный тип pointee обязательно должен быть известен на этапе конструирования.
Приветствия & hth.,