Was ist der Grund, warum die Array-Größe nicht aus der Initialisierungszeichenfolge in der Mitgliedsvariablen abgeleitet werden kann?
Betrachten Sie den Code:
struct Foo
{
const char str[] = "test";
};
int main()
{
Foo foo;
}
s kann nicht sowohl mit g ++ als auch mit clang ++ kompiliert werden und spuckt im Wesentlichen @ au
error: array bound cannot be deduced from an in-class initializer
Ich verstehe, dass dies wahrscheinlich im Standard steht, aber gibt es einen besonders guten Grund dafür? Da es sich um ein String-Literal handelt, sollte der Compiler in der Lage sein, die Größe problemlos abzuleiten, ähnlich wie es der Fall ist, wenn Sie einfach ein Out-of-Class-@ deklariereconst
C-ähnlicher nullterminierter String.