読者です 読者をやめる 読者になる 読者になる

constexpr関数でstatic_assert書けないかなーと足掻いてみた

C++

constexpr関数には
「関数の本体がreturn文のみで構成されなければならない」
という制限があるので、通常の方法ではパラメータチェックができません。


カンマ演算子を使えばなんとかできたりしないかな、と思ってGCC 4.5でこんなのを書いてみましたが

int main()
{
    return (static_assert(true, "failed"), 0);
}
main.cpp: In function 'int main()':
main.cpp:3:10: error: expected primary-expression before 'static_assert'
main.cpp:3:10: error: expected ')' before 'static_assert'

見事にコンパイルエラーでした・・・。


うーん、ということはやっぱり、パラメータチェックしたいconstexpr関数はテンプレートにしてenable_ifでチェックする、とかしかないかな・・・。
まだ手はある気がする。