静态断言检查静态const类数据成员?

时间:2012-06-16 11:16:17

标签: c++ class c++11 static-assert

我有几个带有“static const”数据成员的类。 我想知道如何使用static_assert在编译时检查它们的值。 我可以将static_assert直接放在类体中吗? (将static_assert放在每个构造函数中都不太实用。)

1 个答案:

答案 0 :(得分:4)

是的,static_assert()也可以放在声明的任何地方。这包括一个班级的主体:

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

    // ...
};