Отвечая на этот вопрос, я пытался найти шаблон is_complete
в библиотеке Boost, и я понял, что такого шаблона в Boost.TypeTraits нет. Почему в библиотеке Boost нет такого шаблона? Как это должно выглядеть?
//! 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 );
Вышеприведенный код неверен, потому что недействительно применять sizeof
к неполному типу. Что будет хорошим решением? Можно ли как-то применить SFINAE?
Ну, эта проблема не может быть решена вообще, не нарушая правило ODR, но существует определенная платформа , который работает для меня.