さて、constexpr を使っていると次のように関数内で static_assert を行いたい場合があると思います。 template<typename T> void check(T t){ // t を参照して static_assert にしたい static_assert(t % 2 == 0, ""); } constexpr int a = 2; check(x); // error: 't' is not a constant expression しかし、上記のコードでは check 関数内で constexpr かどうかの判断が行えないのでコンパイルエラーになってしまいます。 これを回避する方法として、構造体内で constexpr 関数を定義する方法があります。 template<typename T> void check(T t){ // operator in