Ist "für jeden" Microsoft spezifisch?

7

Visual C ++ 2010 akzeptiert:

%Vor%

Ist das eine C ++ 11-Funktion oder eine Microsoft-Erweiterung? Laut Wikipedia unterscheidet sich die Syntax von C ++ 11 für jede Schleife:

%Vor%     
George 11.09.2010, 10:09
quelle

4 Antworten

16

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.

    
David Rodríguez - dribeas 11.09.2010, 10:15
quelle
4

Versuchen Sie in VS2010, bei solchen Zweifeln mit dem /Za -Flag unter "C/C++->Language" in den IDE-Projekteinstellungen.

Wie für Ihre Anfrage, ja, das ist keine Standard-C ++ - Syntax.

    
Chubsdad 11.09.2010 10:46
quelle
3

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.

    
Paul Michalik 11.09.2010 10:39
quelle
3

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.

    
Ricky65 17.08.2011 23:32
quelle

Tags und Links