zurück zum Artikel

GoingNative 2012: Visual C++ 11 doch mit "range-based for loop"

Marc Mutz

Auf der derzeit tagenden C++-Entwicklerkonferenz GoingNative kündigte Microsoft an, in Visual Studio 11 nun doch bereichsbasierte For-Schleifen verwenden zu können. Initial war das nicht geplant, was für Ärger unter C++-Entwicklern gesorgt hatte.

Wie Stephan T. Lavavej, Chefentwickler der STL-Implementierung (Standard Template Library) von Microsofts Visual C++ Compiler, auf der Konferenz GoingNative 12 [1] in seiner Präsentation "STL11: Magic && Secrets [2]" mitteilte, wird die Beta der sich in der Entwicklung befindenden Version 11 der Entwicklungsumgebung entgegen den bisherigen Planungen nun doch "range-based for loops" unterstützen.

Mit "range-based for loops", im Deutschen "bereichsbasierte For-Schleifen", kann der C++11-Entwickler effiziente Schleifen ohne umständliches Hantieren mit Iteratoren verwenden. Im Zusammenspiel mit automatischer Typdeduktion (auto) wird dabei aus

for ( std::vector<int>::const_iterator it = v.begin(), end = v.end() ;
it != end ; ++it ) {
const int & i = *it;
doSomethingWith( i );
}

einfach

for ( auto i : v )
doSomethingWith( i );

Nachdem Microsoft-Mitarbeiter im September des letzten Jahres im Blog des Visual-C++-Teams [3] die geplanten C++11-Features vorgestellt hatten, hatte sich die Enttäuschung über deren Umfang unter anderem am Fehlen dieses Features entzündet [4].

Wie Lavavej, dessen Spitzname treffenderweise "STL" ist, weiter ausführte, verdankt die Implementierung von "range-based for loops" ihre Existenz der Eigeninitiative von C++-Compiler-Entwickler Jonathan Caves [5]. Lavavej steuerte die Testsuite bei.

Für die Quellcode-Vervollständigung IntelliSense von Microsofts IDE kam die Änderung jedoch zu spät ("vier Tage vor.dem Schließen der Entwicklung für neue Features" (Feature-Freeze)). Entwickler werden in der IDE daher aller Voraussicht nach rote Korrekturlinien unter "range-based for loops" erhalten. Die Implementierung im Compiler sei jedoch – bis auf die Unterstützung von brace-initializer-list als expression (for ( int i : {1, 2, 4, 8, 16} )) – vollständig, so der STL-Experte. (ane [6])


URL dieses Artikels:
https://www.heise.de/-1427568

Links in diesem Artikel:
[1] http://channel9.msdn.com/Events/GoingNative/GoingNative-2012
[2] http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/STL11-Magic-Secrets
[3] http://blogs.msdn.com/b/vcblog/archive/2011/09/12/10209291.aspx
[4] http://visualstudio.uservoice.com/forums/121579-visual-studio/category/30937-languages-c-
[5] http://blogs.msdn.com/b/joncaves/
[6] mailto:ane@heise.de