Почему мы не можем опустить емкость переменной-члена типа массива со списком инициализаторов по умолчанию в современном C++?

В современном C++ переменные-члены могут быть явно инициализированы. Однако, хотя мы можем опустить емкость массива при определении локального массива в функции со списком инициализаторов, мы не можем опустить емкость члена массива, даже если у него есть список инициализаторов.

Например, в следующем коде:

class A{
    int a[]{1,2,3,4};   // error
    int b[4]{};
    int c[4]{1,2,3,4};
};

Это дает ошибку в переменной-члене a:

привязка массива не может быть выведена из инициализатора в классе

Мне любопытно, почему такое определение не допускается?


person Sangjin Kim    schedule 23.06.2020    source источник
comment
Это обман " title="в чем причина невозможности определить размер массива из инициализатора stri"> stackoverflow.com/questions/29593207/ с некоторыми возможными объяснениями.   -  person cigien    schedule 24.06.2020