¿Cómo escribir la plantilla `is_complete`?

Despues de contestaresta pregunta que estaba tratando de encontraris_complete plantilla en la biblioteca de Boost y me di cuenta de que no hay tal plantilla en Boost.TypeTraits. ¿Por qué no hay tal plantilla en la biblioteca de Boost? ¿Cómo debería ser?

//! Check whether type complete
template<typename T>
struct is_complete
{   
  static const bool value = ( sizeof(T) > 0 );
};

...

// so I could use it in such a way
BOOST_STATIC_ASSERT( boost::is_complete<T>::value );

El código anterior no es correcto, porque es ilegal aplicarsizeof a un tipo incompleto. ¿Cuál será una buena solución? ¿Es posible aplicar SFINAE en este caso de alguna manera?

Bueno, este problema no se pudo resolver en general sin violar elRegla de la ODR, pero hay una plataforma específicasolución que funciona para mi

Respuestas a la pregunta(7)

Su respuesta a la pregunta