この質問に答えた後、Boost ライブラリでテンプレートを見つけようとis_complete
していましたが、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 規則に違反しない限り一般的に解決できませんでしたが、私にとって有効なプラットフォーム固有の解決策があります。