静的アサーション(C++11)
static_assert キーワードはコンパイル時にアサーションをテストするために使用されます。 これは BCC32 に追加された C++11 機能の 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 はテンプレートを超えて役に立ちます。