Я совсем не эксперт по c ++ 0x и надеюсь, что сюда придет кто-нибудь более знающий ... но допускает ли C ++ 0x инициализацию в классе статических членов? Если так, то Clang просто еще не реализовал это. Если нет, вы не можете.
(почти) стандартный , пункт 9.4.2, говорит, что любой константный литеральный тип может быть инициализирован; и 3.9 пункт 10 говорит, что массив int является литералом. Итак, я думаю, что это ошибка в clang 3.0, но в случае шаблонов с переменными параметрами могут быть и другие правила ...
В любом случае, изменение вашего кода для меня работало следующим образом:
template<int... Numbers>
struct int_array {
int x;
const static int list[];
static void print() ;
};
template<int... Numbers>
const int int_array<Numbers...>::list[]={Numbers...};
template<int... Numbers>
void int_array<Numbers...>::print(){
for (const int x : list) {
std::cout << x <<std::endl;
}
}