constexpr int get () { return 5; }
template<int N> struct Test {};
int main ()
{
int a[get()]; // ok
Test< get() > obj; // error:'int get()' cannot appear in a constant-expression
}
私はこのコードをideoneでコンパイルしました。そして、なぜそれがコンパイルエラーを引き起こしているのか疑問に思いました。constexpr
関数は引数として許可されていませんかtemplate
、それともコンパイラのバグですか?
編集:に変更const int get()
さらにint get()
、ideoneにはもう1つのバグconstexpr
があります。削除しても、配列の宣言が許可されます。それはC99の機能だと思います。