C ++ 11-Funktionen in Visual Studio 2012

94

Eine Vorschau-Version von Visual Studio 2012 (die nächste Version nach VS2010) ist jetzt verfügbar .

Weiß jemand, welche neuen C ++ 11-Funktionen es unterstützt? (Ich bin im Moment nicht in der Lage, es auszuprobieren).

HighCommander4
quelle
18
Und ich bin wieder einmal enttäuscht. Nun, um herauszufinden, wie man GCC / GDB flüssiger einsetzt ...
GManNickG
3
GMan: Ich denke, dass ihre Akzeptanz für neue Funktionen ziemlich erstaunlich ist, sicherlich im Hinblick darauf, woher sie kommen (denken Sie an VC 6.0 und Schauder) ... Sicher, die Unterstützung von GCC ist erstaunlich, aber es gibt viele andere Orte, an denen es ist fehlt auch ...
Rubenvb
5
@rubenvn: Nur aus Neugier, an welchen Orten fehlt GCC?
HighCommander4
5
GCC fehlt nicht an Unterstützung für C ++ 11, es ist ziemlich unübertroffen. VC11 fehlt humorvoll. Es ist nicht einmal in der Nähe.
987 S
9
@ HighCommander4: An welchen Stellen fehlt GCC? Debugging-Tools.
user541686

Antworten:

77

Es ist erwähnenswert, dass Visual Studio 2010 bereits einige frühe C ++ 11-Unterstützung hatte. Um zusammenzufassen, was bereits in anderen Antworten verlinkt ist, ist hier Folgendes neu in Visual Studio 11, das nicht Teil von Visual Studio 2010 war:

Anfang November 2012, Microsoft angekündigt , den Visual C ++ Compiler November 2012 CTP , die mehr C ++ 11 - Funktionalität in Visual Studio 2012 fügt hinzu:

Joel Coehoorn
quelle
20
Das ist eigentlich ziemlich enttäuschend ... Ich hatte auf verschiedene Vorlagen und eine einheitliche Initialisierung gehofft, die GCC seit zweieinhalb bzw. eineinhalb Jahren unterstützt ...
HighCommander4
@High Uniform Initialization ist nicht einmal auf der Liste der Features in der Spezifikation (wird nicht einmal mit einem "Nein" angezeigt). Gibt es vielleicht einen anderen Namen dafür?
Joel Coehoorn
2
Ich liebe meine typsicheren Druck- und Druckfunktionen. Ich hatte wirklich gehofft, dass 2011 endlich verschiedene Vorlagen hinzufügen würde. Fehlende Variadiken wirken sich auch auf emplace_backund aus make_shared. Gibt es etwas an cl, das es besonders schwierig macht, Variadics zu implementieren?
Deft_code
5
Herb Sutter sagte in seiner zweiten Build-Sitzung ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ), dass sie versucht haben, verschiedene Vorlagen zu erstellen ... versucht und versucht, und sie sind nicht rechtzeitig für diese Version fertig. Dies wirkte sich auch auf die anderen Dinge aus, die sie tun konnten.
Kate Gregory
2
Hier ist ein guter Vergleich verschiedener Compiler unter C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Gute Regel: Verwenden Sie C ++ 11 nicht in GCC und erwarten Sie, dass es in VS2012 kompiliert wird
Chris Hill
25

Hier ist die Liste der Funktionen der neuen Visual Studio-Version und hier ist die Liste der Funktionen, die alle Compiler unterstützen

Drahakar
quelle
2
Nicht zu wählerisch zu sein, aber Ihr zweiter Link zeigt x0-Unterstützung, nicht 11-Unterstützung.
N_A
Sie haben Recht, aber es bietet immer noch einen guten Überblick über alle Compiler und deren Implementierung.
Drahakar
Ich dachte nur, es wäre gut, klar zu sein. Ich bin damit einverstanden, dass es nützlich ist.
N_A
1
Hoffentlich ist es ein Wiki, jemand, der informiert ist, möchte es vielleicht aktualisieren ^. ^
Drahakar
2
Nun, es scheint, als wäre es kürzlich aktualisiert worden (Freude für die Welt ...) :)
Drahakar
6

Es gibt eine Liste gibt . Was mir am meisten auffällt, sind die Funktionen, die noch fehlen :

  • Sie sagten, sie würden vorrangig verschiedene Vorlagen implementieren, und das taten sie nicht.
  • Wir müssen Verschiebungskonstruktoren für viele Klassen weiterhin von Hand deklarieren, da es keine delegierenden Konstruktoren gibt.
  • Vererbungskonstruktoren sind nicht vorhanden, und dies wäre für einige Codes wirklich erforderlich
  • Keine einheitliche Initialisierung, insbesondere keine Initialisierungslisten. Dies ist zum Kotzen, wenn Sie sie mit g ++ verwendet haben.
  • Immer noch kein korrekter lokaler Thread-Speicher. Sie bleiben also boost::thread_specific_ptreine Weile hängen.

Alle anderen Funktionen, die noch fehlen, sind hauptsächlich Dinge, auf die Sie verzichten können. Was ich hier aufführe, ist genau das, was mich jeden Tag nervt, wenn ich mit VS10 arbeite. Es ist nur so irritierend, dass sie überhaupt nicht am Compiler gearbeitet haben.

EDIT: Ich werde auch hinzufügen, dass emplace_back(eine großartige Funktion für die Standard-Bibliothekscontainer) nicht korrekt implementiert ist.

Alexandre C.
quelle
6
Sie haben verschiedene Vorlagen zur Priorität gemacht. Das ist der Grund, warum, wenn verschiedene Vorlagen nicht rechtzeitig fertig wurden, auch die anderen Sprachfunktionen nicht fertig wurden. (Außer, wie sich herausstellt, für die Skunkworks Range-for.)
Kate Gregory
4
? Ich kann wirklich nicht ohne nicht statische Datenelementinitialisierer leben.
Trass3r
Das Problem bei verschiedenen Vorlagen ist, dass sich der Standard zu spät geändert hat und sie nicht genug Zeit hatten, um diese Funktion vollständig zu wiederholen.
Ark-Kun
5

Während GoingNative im Februar 2012 gab STL bekannt, dass Range-for ab der Beta, die am 29. Februar erwartet wird, in VS11 verfügbar sein wird. Eine Aufzeichnung des Vortrags ist verfügbar. "The Reveal" ist nach einer Stunde und 38 Minuten.

Kate Gregory
quelle