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.