さて、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