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

Vin*_*ent 5 c++ class static-assert c++11

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

Mar*_*utz 4

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

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

    // ...
};
Run Code Online (Sandbox Code Playgroud)