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 }
我有compiled this code with ideone.而且想知道为什么它给出编译错误.
constexpr函数不允许作为模板参数,还是编译器中的错误?
编辑:改变const int get()到int get()
此外,还有一个与ideone有关的bug是,如果你删除constexpr然后still declaring an array is allowed!我认为这是一个C99功能.