Funzionalità C ++ 11 in Visual Studio 2012


94

È ora disponibile una versione di anteprima di Visual Studio 2012 (la versione successiva dopo VS2010) .

Qualcuno sa quali nuove funzionalità di C ++ 11 supporta? (Al momento non sono in grado di provarlo).


18
E sono rimasto deluso ancora una volta. Ora per capire come utilizzare GCC / GDB in modo più fluido ...
GManNickG

3
GMan: Penso che la loro comprensione delle nuove funzionalità sia piuttosto sorprendente, sicuramente in considerazione della loro provenienza (pensa a VC 6.0 e rabbrividisci) ... Certo, il supporto di GCC è sorprendente, ma ci sono molti altri posti in cui è manca troppo ...
rubenvb

5
@rubenvn: Solo per curiosità, in quali luoghi manca il GCC?
HighCommander4

5
GCC non manca di supporto a C ++ 11, è praticamente uguale. VC11 è scherzosamente carente. Non è nemmeno vicino.
987 S

9
@ HighCommander4: In quali luoghi manca il GCC? Strumenti di debug.
user541686

Risposte:


77

Vale la pena notare che Visual Studio 2010 aveva già un discreto supporto per C ++ 11. Quindi, per riassumere ciò a cui è già collegato in altre risposte, ecco cosa c'è di nuovo in Visual Studio 11 che non faceva parte di Visual Studio 2010:

All'inizio di novembre 2012, Microsoft ha annunciato il CTP di novembre 2012 del compilatore Visual C ++ , che aggiunge ulteriori funzionalità C ++ 11 a Visual Studio 2012:


20
In realtà è piuttosto deludente ... Speravo in modelli variadici e inizializzazione uniforme, che GCC supporta rispettivamente da due anni e mezzo e uno e mezzo ...
HighCommander4

@ L'inizializzazione ad alta uniformità non è nemmeno nel loro elenco di funzionalità nelle specifiche (non compare nemmeno con un "No"). C'è forse un altro nome per quello?
Joel Coehoorn

2
Adoro le mie funzioni di stampa sicura dai tipi e printf. Speravo davvero che il 2011 avrebbe finalmente aggiunto i modelli variadici. Anche le variabili variabili mancanti stanno effettuando emplace_backe make_shared. C'è qualcosa in cl che rende particolarmente difficile implementare le variabili?
deft_code

5
Herb Sutter ha detto nella sua seconda sessione di Build ( channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-835T ) che hanno provato a creare modelli variadici ... provati e provati e non sono stati completati in tempo per questa versione. Ciò ha influenzato anche le altre cose che potevano fare.
Kate Gregory

2
Ecco un buon confronto tra diversi compilatori su C ++ 11. wiki.apache.org/stdcxx/C++0xCompilerSupport Buona regola: non usare C ++ 11 in GCC e aspettarti che venga compilato in VS2012
Chris Hill

25

Ecco l'elenco delle funzionalità della nuova versione di Visual Studio ed ecco l'elenco di ciò che supportano tutti i compilatori


2
Non essere troppo esigente, ma il tuo secondo link mostra il supporto x0 non 11 supporto.
N_A

Hai ragione, ma fornisce comunque una buona panoramica di tutti i compilatori e di cosa hanno implementato.
Drahakar

Ho solo pensato che sarebbe stato bello essere chiari. Sono d'accordo che sia utile.
N_A

1
Si spera che sia un wiki, qualcuno informato potrebbe volerlo aggiornare ^. ^
Drahakar

2
Bene, sembra che sia stato recentemente aggiornato (gioia al mondo ...) :)
Drahakar

6

C'è un elenco . Quello che mi colpisce di più sono le caratteristiche che ancora mancano :

  • Hanno detto che avrebbero implementato modelli variadici come priorità e non l'hanno fatto.
  • Dovremo comunque dichiarare manualmente i costruttori di spostamenti per molte classi, poiché non ci sono costruttori delegati.
  • I costruttori ereditari non sono presenti e questo sarebbe davvero necessario per del codice
  • Nessuna inizializzazione uniforme, in particolare nessuna lista di inizializzatori. Questo fa schifo quando li hai usati con g ++.
  • Ancora nessuna memoria locale del thread corretta. Quindi sei bloccato boost::thread_specific_ptrper un po '.

Tutte le altre funzionalità che ancora mancano sono principalmente cose di cui puoi vivere senza. Quello che elenco qui è proprio ciò che mi tormenta ogni giorno quando lavoro con VS10. È così irritante che non abbiano funzionato affatto sul compilatore.

EDIT: aggiungerò anche che emplace_back(una grande caratteristica per i contenitori della libreria standard) non è implementata correttamente.


6
Hanno fatto dei modelli variadici una priorità. Ecco perché, quando i modelli variadici non sono stati completati in tempo, anche le altre funzionalità del linguaggio non sono state completate. (Tranne, a quanto pare, per la gamma skunkworks-for.)
Kate Gregory

4
? Non posso davvero vivere senza inizializzatori di membri dati non statici.
Trass3r

Il problema con i modelli variadici è che lo standard è cambiato troppo tardi e non hanno avuto abbastanza tempo per rifare completamente quella funzione.
Ark-kun

5

Durante GoingNative nel febbraio 2012, STL ha annunciato che il range-for sarà in VS11 a partire dalla beta, prevista per il 29 febbraio. È disponibile una registrazione del discorso . "The Reveal" è al segno di un'ora e 38 minuti.




Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.