Jak napisać szablon `is_complete`?

Po odpowiedzito pytanie, które próbowałem znaleźćis_complete szablon w bibliotece Boost i zdałem sobie sprawę, że nie ma takiego szablonu w Boost.TypeTraits. Dlaczego nie ma takiego szablonu w bibliotece Boost? Jak to powinno wyglądać?

//! 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 );

Powyższy kod jest nieprawidłowy, ponieważ jego stosowanie jest nielegalnesizeof do niekompletnego typu. Jakie będzie dobre rozwiązanie? Czy można w jakiś sposób zastosować SFINAE?

Cóż, tego problemu nie można rozwiązać w ogóle, nie naruszającZasada ODR, ale istnieje specyficzna platformarozwiązanie co dla mnie działa.

questionAnswers(7)

yourAnswerToTheQuestion