Инициализация массива-члена в инициализаторе конструктора
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 проблему?Постскриптум Пожалуйста, не упоминайте векторы, boost :: arrays и их превосходство над массивами, о которых я хорошо знаю.