Списки инициализаторов c ++ и переменные templates

Я хотел создать массив:

template < typename T, typename ... A > struct a {
  T x [1 + sizeof... (A)];
  a () = default;
  a (T && t, A && ... y) : x { t, y... } {}
};

int main () {
  a < int, int > p { 1, 1 }; // ok
  a < a < int, int >, a < int, int > > q { { 1, 1 }, { 3, 3 } }; // error: bad array initializer
}

Почему он не компилируется? (проверено с g ++ 4.6)

6
задан Thomas 29 March 2011 в 16:13
поделиться