静的アサーション(C++0x)

提供: Appmethod Topics
移動先: 案内検索

C++0x 対応機能:インデックス への移動

static_assert キーワードはコンパイル時にアサーションをテストするために使用されます。 これは Appmethod C++ 2009 に追加された C++0x 機能の 1 つです。

このキーワードはマクロ assert(実行時にアサーション)と動作が異なります。 またこの static_assert キーワードはプリプロセッサ指令 #error(プリプロセス中に動作し、単にメッセージを表示)とも動作が異なります。

構文

静的アサーションの宣言は次のとおりです。

static_assert (constant-expression, error-message);

constant-expression には論理型として静的に評価できる式が必要です。 constant-expression が true である場合は、このステートメントで何も実行されません。 false である場合は、コンパイラによりテキスト error-message を表示するエラーが生成されます。

アサーションはコンパイル時にテストされるので、static_assert ではテンプレートのエラーをチェックできます。 次に例を示します:

template <class T>
   T Test(T x, T y) 
  {
   static_assert(sizeof T <= sizeof long, "Type is too large");
   ...
   };

static_assert は静的な型のチェックに便利です。 int の実装値が小さすぎる場合は一部の関数でエラーになることがあります。したがって static_assert はテンプレートを超えて役に立ちます。

関連項目