В чем причина невозможности определить размер массива из строки инициализатора в переменной-члене?
Рассмотрим код:
struct Foo
{
const char str[] = "test";
};
int main()
{
Foo foo;
}
Он не компилируется как с g ++, так и clang ++, выпуская по существу
error: array bound cannot be deduced from an in-class initializer
Я понимаю, что именно об этом, вероятно, говорит стандарт, но есть ли какая-то конкретная причина, почему? Поскольку у нас есть строковый литерал, кажется, что компилятор должен иметь возможность без проблем определять размер, аналогично случаю, когда вы просто объявляете вне классаconst
C-подобная строка с нулевым символом в конце.