Migrazione? Pensavo che il WG21 combattesse duramente per preservare tutta la compatibilità. A meno che tu non abbia usato l'esportazione, non hai bisogno di migrazione, il codice esistente va bene.
Immagino che intendiate davvero la domanda per il refactoring del codice esistente per riprendere le caratteristiche di C++ 11. Qui applicherei la saggezza generale sul refactoring - non farlo mai senza un obiettivo adeguato e una motivazione basata sul valore.
Solo che le nuove caratteristiche brillanti introdotte non impongono il debito tecnologico sul codice.
Ti suggerisco di iniziare a utilizzare le nuove funzionalità nel nuovo codice e di applicare modifiche più liberali in cui comunque ti rifatti per ragioni diverse. E iniziare a pensare in generale a rimodellare solo quando avere più stili è considerato un vero dolore. (La natura multi-paradigma del C++ normalmente dovrebbe consentire abbastanza molta libertà, e la forza approccio uniforme solo occasionalmente.)
Dalle nuove funzionalità quello che avevo Focus on:
- auto. Tutto il mio nuovo codice è pieno di
auto const
e locali che omettono i tipi. Ok, uno ha suggerito globalreplace contraddicendo ciò che ho detto in precedenza: sostituire :: iterator l'utilizzo in automatico se si dispone di loop che li utilizzano.
- lambda, se si utilizza algos con funzioni one-shot
- il nuovo materiale filettatura, soprattutto
std::future
se si applica al progetto
Se vi capita di usare 'std :: auto_ptr' probabilmente un buon candidato anche per globalreplace.
Ho omesso la semantica del movimento perché devo ancora saltarci sopra, non sono sicuro dell'impatto, quindi lascio che altri lo suggeriscano o no.
fonte
2013-06-02 11:14:11
Non si conoscono le modifiche necessarie fino all'avvio del porting. Molto probabilmente, non saranno necessarie modifiche, ma è possibile ottenere benefici (evitando spesso cicli di allocazione/copia/libero) utilizzando il vantaggio di cose come l'inoltro perfetto, la collocazione e così via. –
A meno che non stiate usando la parola chiave 'auto' come identificatore della durata di memorizzazione (è stato cambiato per essere usato per l'inferenza di tipo in C++ 11) Non penso che dovrete cambiare nulla. – jrok
So che 'C++ 11' è retrocompatibile con nuove funzionalità. Ma ci sono versioni del compilatore di esempio di un cambiamento specifico? –