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 还有一个错误是,如果您删除,constexpr
则仍然允许声明数组!我认为这是 C99 的功能。