Bereichsbasierte for-Schleife ohne Angabe des Variablentyps

8

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:

  • Was macht dieser Code (ist es nur eine Möglichkeit, auto anzunehmen, ohne sie zu tippen, oder gibt es mehr?)
  • was c ++ 1z ist (ich kenne c ++ 11, c ++ 14, noch nie von c ++ 1z gehört ...)
kebs 09.01.2016, 19:00
quelle

1 Antwort

9

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:

%Vor%

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.

    
Jerry Coffin 09.01.2016, 19:30
quelle

Tags und Links