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};
Вопросы
- Как я могу делать то, что хочу (то есть инициализировать массив в конструкторе (не назначая элементы в теле)). Это вообще возможно?
- Говорит ли стандарт C ++ 03 что-нибудь особенное об инициализации агрегатов (включая массивы) в инициализаторах ctor? Или недействительность приведенного выше кода является следствием каких-то других правил?
- Списки инициализаторов C ++ 0x решают проблему?
PS Прошу не упоминать векторы, boost :: array и их превосходство над массивами, о чем я хорошо осведомлен.