constexpr int get () { return 5; } template
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.