
Zitat von
i_make_it
Diese Aussage, ist aber schlichtweg falsch (Zumindest für eine ISO IEC 14882 konforme C++ Implemtierung. Und was anderes ist ja kein C++ sondern eine andere Sprache).
Da muss ich HaWe jetzt aber beispringen, zu diesen C++ Zeiten war ich an der Uni.
Ja, die Initialisierung von Array in der Form
Code:
int feld[] = { 1, 2, 3 };
gibt es schon seit Anfang an in C++, weil es sie schon seit dieser Zeit in C gab.
Und ja, es war damals, also auch in den ersten ISO Normen, die einzige Möglichkeit ein C Array direkt bei der Definition zu initialisieren. Und zwar nur C Array keine Vektoren oder so.
Und ja, es war schon damals guter Stil, die Größe des Feldes nicht extra in die eckigen Klammern zu schreiben.
Daraus, und das vermischt HaWe etwas, wurde die "Uniform Initialisation" in C++11, neuer Stil wäre also eher
Code:
array<int> feld = { 1, 2, 3 }
auto n = feld.size();
Hier wird auch bei n nicht mal der Typ angegeben, das nennt sich AAA-Stil (almost always auto), wird von einigen Experten empfohlen (Scott Meyers, Herb Sutter, ...), ist aber nicht unumstritten.
Man kann heute übrigens, in aktuellem C++, in der Arduino IDE nur bei den Teensy Boards, alles mit geschweiften Klammern initialisieren
Code:
int a = 1;
int b{2};
Warum das in der ISO Norm u.a. geändert wurde, kann man hier lesen
https://en.wikipedia.org/wiki/Most_vexing_parse
Lesezeichen