Hi, does has_trivial_destructor<> and co depend on compiler magic? Is it possible to detect empty deconstructors/constructors. The reason I ask is because I'd like to make better placeholders for a boost::optional implementation using new unions from N2544. template<typename T> union placeholder{ T v; placeholder() {} // breaks has_trivial_constructor ~placeholder (){} // breaks has_trivial_destructor }; Is improving these possible or is there some conceptual problem with a circular reference? Chris