をテンプレートタイプをチェックし、コンパイル時エラーを強制:これは私がやろうとしています何である一定の
#define SIZE 8
template<class T>
struct name {
T a;
name() {
#if SIZE != sizeof(T)*8
#error Size mismatch
#endif
}
};
int main(void)
{
name<uint16_t> a; //Size mismatch
return 0;
}
私が使用しているときのサイズが一致しない場合には、コンパイル時エラーを与えたいですテンプレート化された構造体ie name<uint16_t>
は、要件(sizeof(T)*8 == 8)
に準拠していないため、コンパイル時エラーが発生します。
<C++11
でこれを行うことはできますか?
boostには独自のバージョンのSTATIC_ASSERTがあります。http://www.boost.org/doc/libs/1_61_0/doc/html/boost_staticassert.html –
@πάνταῥεῖ:おそらく私の問題は何とか解決されますが、 enable_if'の実装[ここ](http://en.cppreference.com/w/cpp/types/enable_if)使用法: 'template :: type> struct name ...'(私はちょうど答えとして投稿していました:D) –
Jahid