C++ TR1 静的な表明

static_assertは、コンパイル時に式が条件を満たすかテストします。
式がfalseを返すときは、コンパイルに失敗します。

static_assert(テストする式, コンパイルエラーのメッセージ)

static_assert(sizeof(int) < sizeof(long), "error");

has_virtual_destructorは、型に仮想デストラクタが存在するかどうかをテストします。

#include <type_traits>
static_assert(
  std::tr1::has_virtual_destructor<TObject>::value, 
  "destructor must be virtual");

例えば、longがintより大きいサイズであることに依存するアルゴリズムの実装のように、標準では保障されていない箇所の確認などの用途がある

C++0x – Wikipedia

なるほど。
実行時ではなく、コンパイル時にテストできるのは嬉しいかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください