class C
{
public:
C() : arr({1,2,3}) //doesn't compile
{}
/*
C() : arr{1,2,3} //doesn't compile either
{}
*/
private:
int arr[3];
};
Acredito que o motivo é que os arrays podem ser inicializados apenas com =
sintaxe, ou seja:
int arr[3] = {1,3,4};
Questões
- Como posso fazer o que quero (ou seja, inicializar uma matriz em um construtor (não atribuindo elementos no corpo)). É mesmo possível?
- O padrão C ++ 03 diz algo especial sobre a inicialização de agregados (incluindo matrizes) em inicializadores de ctor? Ou a invalidade do código acima é um corolário de algumas outras regras?
- As listas de inicializadores C ++ 0x resolvem o problema?
PS Por favor, não mencione vetores, boost :: arrays, e sua superioridade em relação a arrays, que eu conheço bem.