class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Я считаю, что причина в том, что массивы могут быть инициализированы только синтаксисом =
, то есть:
int arr[3] = {1,3,4};
Вопросы
- Как я могу делать то, что хочу (что is, инициализировать массив в конструктор (не назначая элементы в организме)). Возможно ли это?
- Знает ли стандарт С++ 03 что-то особенное об инициализации агрегатов (включая массивы) в инициализаторах ctor? Или недействительность вышеуказанного кода является следствием некоторых других правил?
- Реализуют ли списки инициализаторов С++ 0x?
P.S. Пожалуйста, не указывайте векторы, boost:: array и их превосходство в массивах, о которых я хорошо знаю.