Ich habe gerade festgestellt, dass das ohne Fehler kompiliert wird (gcc 5.3):
%Vor%Der Compiler gibt diese Warnung aus:
warning: bereichsbasierte for-Schleife ohne Typspezifizierer nur verfügbar mit -std = c ++ 1z oder -std = gnu ++ 1z
Könnte jemand erklären:
auto
anzunehmen, ohne sie zu tippen, oder gibt es mehr?) Der Vorschlag (der nicht akzeptiert wurde, damit er nicht offizieller Teil der Sprache wird) war, dass, wenn Sie den Typspezifizierer weggelassen haben, der Typbezeichner auto &&
entspricht, also Ihr für Schleife wäre äquivalent zu:
Weitere Einzelheiten, z. B. zur Motivation und zu den spezifischen Auswirkungen auf den (aktuellen) Standard, finden Sie im Vorschlag N3853 .
Der Vollständigkeit halber: C ++ 1z war ein Code-Name für was als C ++ 17 gearbeitet wird. Es ist eher zufällig entstanden: Was C ++ 11 wurde, wurde lange Zeit als "C ++ 0x" bezeichnet. Als es zu Ende ging, wollten die Leute einen Weg, sich auf die next -Version zu beziehen, also erhöhten sie x
(was ursprünglich nur für "eine unbekannte Zahl" stand) zu y
. Danach kam, offensichtlich genug, z
, was C++1z
ergab.