In c ++ 11 haben wir eine schöne einheitliche Initialisierungssyntax für Objekte. Warum wird nicht auch Nichtobjekttypen initialisiert?
Gibt es dafür irgendeine syntaktische Zweideutigkeit, oder ist es nur eine dumme Frage, die ich stelle?
Beispiel:
%Vor%Ein nützlicheres Beispiel:
%Vor%Ein anderer:
%Vor%Die Initialisierungsregeln von C ++ sind ziemlich kompliziert. Sie sind in der zweiten Hälfte des Kapitels (Abschnitt) 8 des Standards beschrieben. Es gibt Nullinitialisierung, Direktinitialisierung, Wertinitialisierung, Kopeinitialisierung, Listeninitialisierung, um nur einige zu nennen, und jede kann abhängig vom Kontext (Deklaration, Parameter, Rückgabe, Sprung, Elementinitialisierung, etc.) Unterschiedliche Interaktionen haben ), Eigenschaften des zu bindenden Typs und Eingabe Initialisierungsausdruck oder braced-init-list. Die Sprachdesigner machen es auch zu einem Ziel, mit C und älteren Versionen von C ++ nahezu abwärtskompatibel zu sein, was ihre Möglichkeiten einschränkt. Es bedarf einiger Untersuchungen, um über die Auswirkungen von Änderungen an den Initialisierungsregeln zu spekulieren, und Änderungen können viele unbeabsichtigte Eckenfälle erzeugen. Wenn Sie interessiert sind, ermutige ich Sie, den Standard zu studieren und zu versuchen, die Auswirkungen einer vorgeschlagenen Änderung, die Sie entworfen haben, zu durcharbeiten.
Tags und Links c++ c++11 uniform-initialization