5

「静的 const」データ メンバーを持つクラスがいくつかあります。コンパイル時に static_assert を使用してそれらの値をチェックする方法を知りたいです。クラス本体に直接 static_assert を入れることはできますか? (すべてのコンストラクターに static_assert を入れるのはあまり実用的ではありません。)

4

1 に答える 1

4

はい、static_assert()宣言を配置できる場所ならどこにでも配置できます。これには、クラスの本体が含まれます。

class C {
public:
    enum E {
      A, B, C,
      NumEes
    };
    constexpr Foo foos[] = { {...}, {...}, {...} };
    static_assert( NumEes == sizeof foos / sizeof *foos, "size mismatch" );

    // ...
};
于 2012-06-16T12:21:08.317 に答える