とかいうよくわからん記事がでている。流行りに乗ってみるか。
独自の縛り
- コンパイル時に評価
- C++11
コード
まあコンパイル時と言ってもただのoperator overloadだ。
struct A { bool a; };
constexpr bool operator==(A, int) noexcept { return true; }
constexpr A a{};
static_assert(a == 1 && a == 2 && a == 3, "");
int main(){}
他の言語しか知らない人のために解説しておくと、static_assert
は第1引数が偽のとき、第2引数の文字列を含むコンパイルエラーを出すものだ。エラーが出なければtrueになったといえる。