Fonctionnalités C ++ 11 dans Visual Studio 2012

94

Une version préliminaire de Visual Studio 2012 (la prochaine version après VS2010) est désormais disponible .

Quelqu'un sait-il quelles nouvelles fonctionnalités C ++ 11 il prend en charge? (Je ne suis pas en mesure de l'essayer pour le moment).

HighCommander4
la source
18
Et je suis une fois de plus déçu. Maintenant, pour comprendre comment utiliser GCC / GDB plus couramment ...
GManNickG
3
GMan: Je pense que leur adoption des nouvelles fonctionnalités est assez étonnante, certainement au vu de leur origine (pensez à VC 6.0 et frissonnez) ... Bien sûr, le support de GCC est étonnant, mais il y a beaucoup d'autres endroits. manque trop ...
rubenvb
5
@rubenvn: Juste par curiosité, dans quels endroits le CCG manque-t-il?
HighCommander4
5
GCC ne manque pas de support de C ++ 11, il est à peu près inégalé. VC11 manque d'humour. Ce n'est même pas proche.
987 S
9
@ HighCommander4: Dans quels endroits le CCG manque-t-il? Outils de débogage.
user541686

Réponses:

77

Il convient de noter que Visual Studio 2010 avait déjà un peu de prise en charge initiale de C ++ 11. Donc, pour résumer ce qui est déjà lié dans d'autres réponses, voici les nouveautés de Visual Studio 11 qui ne faisaient pas partie de Visual Studio 2010:

Début novembre 2012, Microsoft a annoncé le compilateur Visual C ++ de novembre 2012 CTP , qui ajoute plus de fonctionnalités C ++ 11 à Visual Studio 2012:

Joel Coehoorn
la source
20
C'est en fait assez décevant ... J'espérais des modèles variadiques et une initialisation uniforme, que GCC prend en charge depuis deux ans et demi et un an et demi, respectivement ...
HighCommander4
L'initialisation @High uniforme n'est même pas sur leur liste de fonctionnalités dans la spécification (ne s'affiche même pas avec un "Non"). Y a-t-il peut-être un autre nom pour cela?
Joel Coehoorn le
2
J'adore mes fonctions d'impression et d'impression sécurisées. J'espérais vraiment que 2011 ajouterait enfin des modèles variadiques. Les variadiques manquants affectent également emplace_backet make_shared. Y a-t-il quelque chose à propos de cl qui rend particulièrement difficile la mise en œuvre des variadiques?
deft_code
5
Herb Sutter a déclaré dans sa deuxième session de construction ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ) qu'ils ont essayé de faire des modèles variadiques ... essayé et essayé et ils ne sont pas faits à temps pour cette version. Cela a également affecté ce qu'ils pouvaient faire.
Kate Gregory
2
Voici une bonne comparaison de différents compilateurs sur C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Bonne règle: n'utilisez pas C ++ 11 dans GCC et attendez-vous à ce qu'il compile dans VS2012
Chris Hill
25

Voici la liste des fonctionnalités de la nouvelle version de Visual Studio et voici la liste de ce que tous les compilateurs supportent

Drahakar
la source
2
Ne pas être trop pointilleux, mais votre deuxième lien montre le support x0 et non le support 11.
N_A le
Vous avez raison, mais cela donne quand même un bon aperçu de tous les compilateurs et de ce qu'ils ont implémenté.
Drahakar le
Je pensais juste que ce serait bien d'être clair. Je suis d'accord que c'est utile.
N_A le
1
Espérons que c'est un wiki, quelqu'un informé voudra peut-être le mettre à jour ^. ^
Drahakar
2
Eh bien, il semble qu'il ait été récemment mis à jour (joie du monde ...) :)
Drahakar
6

Il y a une liste là-bas . Ce qui me frappe le plus, ce sont les fonctionnalités qui manquent encore :

  • Ils ont dit qu'ils mettraient en œuvre des modèles variadiques en priorité et ils ne l'ont pas fait.
  • Nous devrons toujours déclarer les constructeurs de déplacement à la main pour de nombreuses classes, car il n'y a pas de constructeur de délégation.
  • Les constructeurs héritiers ne sont pas présents, et cela serait vraiment nécessaire pour certains codes
  • Pas d'initialisation uniforme, en particulier pas de listes d'initialiseurs. Cela craint quand vous les avez utilisés avec g ++.
  • Toujours pas de stockage local de thread correct. Vous êtes donc coincé boost::thread_specific_ptrpendant un moment.

Toutes les autres fonctionnalités qui manquent encore sont principalement des choses dont vous pouvez vous passer. Ce que je liste ici est ce qui me dérange tous les jours lorsque je travaille avec VS10. C'est tellement irritant qu'ils n'ont pas du tout fonctionné sur le compilateur.

EDIT: J'ajouterai également que emplace_back(une grande fonctionnalité pour les conteneurs de bibliothèque standard) n'est pas correctement implémenté.

Alexandre C.
la source
6
Ils ont fait des modèles variadiques une priorité. C'est pourquoi, lorsque les modèles variadiques n'étaient pas terminés à temps, les autres fonctionnalités du langage ne l'étaient pas non plus. (Sauf, en fin de compte, pour la gamme Skunkworks-for.)
Kate Gregory
4
? Je ne peux vraiment pas vivre sans initialiseurs de membres de données non statiques.
Trass3r
Le problème avec les modèles variadiques est que la norme a changé trop tard et qu'ils n'ont pas eu assez de temps pour refaire complètement cette fonctionnalité.
Ark-kun
5

Lors de GoingNative en février 2012, la STL a annoncé que range-for sera dans VS11 à partir de la version bêta, prévue le 29 février. Un enregistrement de la conférence est disponible. "The Reveal" est à la marque d'une heure 38 minutes.

Kate Gregory
la source