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()
Более того, есть еще одна ошибка с идеоне в том, что если вы удалите constexpr
, то все еще объявляет, что массив разрешен! Я считаю, что функция C99.