Следующая тестовая программа отлично компилируется и работает с g++. С Intel icpc (14.0.2) он скомпилируется и запустится, если я использую явный тип, например double, вместо шаблона. Версия шаблона с icpc выдает ошибку:
icpc -g -O2 -I. -std=c++0x -c main.cc -o main.o
main.cc(10): error: a member of type "const T [9]" cannot have an in-class initializer
static constexpr T dx_[9] = {
Тестовый код
template<typename T>
class myclass {
public:
static constexpr T dx_[9] = {
1.5, 2.0, -0.5,
-0.5, 0.0, 0.5,
0.5, -2.0, -1.5
};
};
template<typename T> constexpr T myclass<T>::dx_[9];
int main(int argc, char *argv[]) {
return 0;
} // main
Почему я получаю сообщение об ошибке "не может иметь встроенный инициализатор" при использовании constexpr
?