Итак, я просматривал исходный код boost и наткнулся на это:
(from <boost/checked_delete.hpp>
)
template<class T> inline void checked_delete(T * x)
{
// intentionally complex - simplification causes regressions
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
(void) sizeof(type_must_be_complete);
delete x;
}
Кто-нибудь знает, почему это реализовано таким образом? Разве размер (T) (например) уже не был бы достаточным?