boost user - static_assert

since: 2002-08-29 update: 2002-08-29 count:

これ、単体ではつまんないんですよ。 例えば、

// 32ビットじゃなきゃダメ。
BOOST_STATIC_ASSERT(sizeof(void*) == 4);

なんて感じ。 これ、普通の assert と違って、コンパイルタイムに検出できるのです。 実行時には全く何も実行されない。 コードの中ならほぼどこにでも置ける。 まあ、そういうもの。

からくりも簡単。ドキュメントから引用。

template <bool> struct STATIC_ASSERTION_FAILURE;
template <> struct STATIC_ASSERTION_FAILURE<true>{};

というような、テンプレート引数が false なら 定義されていない型を利用するのです。

まあ、次項の type_traits と組み合わせる色々面白いんです。


home / index

全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。

shinichiro.hamaji _at_ gmail.com / shinichiro.h