Der aktuelle Standardentwurf enthält nicht die for each ( auto i in v )
-Syntax, nur die for ( auto i : myints )
, also ja, es ist nur eine Erweiterung.
Neben der oben dargestellten for-loops-Version wäre eine konforme c ++ 0x-Standardversion auch:
%Vor%Das von Ihnen präsentierte Konstrukt ist ebenfalls standardkonform, aber es entspricht verschiedenen Standards: Die ECMA C ++ / CLI-Spezifikation.
Ich möchte auch einen Vorbehalt von Microsofts "für jede" Schleife notieren; Bei Verwendung von STL-Containern wie std :: vector können Variablen nicht als Referenz übergeben werden, sondern nur als Wert und const-Referenz. Zum Beispiel:
%Vor%Wenn Ihr Compiler C ++ 0x range-based unterstützt, würde ich das stattdessen verwenden. Wenn nicht, würde ich BOOST_FOREACH oder std :: for_each mit einem Funktionsobjekt oder Lambda verwenden, da diese portierbar sind. Was auch immer du tust, halte dich von Microsofts "für jeden" fern.