Почему CL не компилирует следующий код (вроде все законно):
struct ab {
ab(int _a, int _b) : a(_a), b(_b) {}
int a, b;
};
template<class T, int n> struct foo { T data[n]; };
int main() {
foo<ab, 2> theFoo = { ab(1, 2), ab(1, 2) };
return 0;
}
error C2552: 'theFoo' : non-aggregates cannot be initialized with initializer list
Если у ab убрать конструкор и написать
foo<ab, 2> theFoo = { 1, 2, 1, 2 };
все компилируется. Причем, GCC совершенно спокойно компилирует и тот и другой вариант.
Помогите пожалуйста разобраться.
Знающие не говорят, говорящие не знают. Лао Цзы