2011-10-19 7 views
8

Quali sono le funzionalità di C++11 mature che posso iniziare a utilizzare in modo sicuro nei miei progetti. Sto parlando di GCC principalmente raramente ho bisogno di Visual Studio. e ovviamente non voglio includere una funzionalità nel mio codice che richiede una riscrittura dopo pochi mesi. e dovrei iniziare a usare queste funzionalità proprio in questo inizio? perché qualunque cosa facciamo per lo più non è c++11 dependent, possiamo fare tutto e anche tutti i metodi della vecchia scuola. quindi dovremmo iniziare a utilizzare le funzionalità di C++ 11 in questa fase iniziale?Quale funzionalità stabile di C++ 11 può essere utilizzata in modo sicuro

+4

Quale versione di GCC è destinata al targeting, dove verrà eseguito questo codice, quali sono i sistemi di destinazione utilizzati ... Questa pagina descrive quando le funzionalità erano disponibili nelle versioni di GCC: http://gcc.gnu.org/projects/cxx0x. html – birryree

+0

Sto usando MinGW su Windows Non ho controllato quella versione. e su Linux ho 4.3.2, ma non lo so dove mi troverò la prossima volta al lavoro. –

+0

queste funzionalità sono aperte alle modifiche? o sono stabili? –

risposta

8

Lo standard C++ 11 è finalmente pronto e pubblicato, quindi non ci saranno più modifiche. Le implementazioni sono ancora in ritardo e potrebbero implementare versioni leggermente più vecchie di C++ 0x, ma probabilmente non noterai molta differenza quando saranno aggiornate.

C++ 11 non è perfettamente compatibile con le versioni precedenti, quindi la prima cosa da fare è iniziare a sviluppare con la compatibilità con C++ 11. GCC ha un flag di avviso, "-WC++ 0x-compat", per aiutare con questo. Le incompatibilità sono abbastanza piccole, ma questo dovrebbe rivelare tutto ciò che sarà un problema.

Una grande incompatibilità è che l'ABI di libstdC++ cambia con il passaggio a C++ 11, quindi dovrai anche assicurarti di poterlo affrontare.

Una volta che sai che è sicuro di spostarti, inizia semplicemente a costruire in modalità C++ 11. È possibile adottare gradualmente qualsiasi funzionalità di C++ 11 ti sembra utile mentre scrivi nuovo codice o modifichi il vecchio codice. Si potrebbe anche prendere in considerazione la possibilità di controllare gli usi di funzionalità deprecate, come le vecchie specifiche delle eccezioni, e sostituirle con quelle nuove.

C'è un sacco di roba nuova, quindi dai un'occhiata allo standard se riesci ad ottenerlo o qualche documentazione online. Trovo che la maggior parte delle cose veramente interessanti che voglio usare direttamente sia nella libreria. Sfortunatamente ciò sembra essere il punto in cui le attuali implementazioni sono ancora in ritardo.

0

Si consiglia di visitare il sito:

http://gcc.gnu.org/projects/cxx0x.html

Questo collegamento dà il supporto C++ 0x in diverse versioni GCC.

Ti suggerisco di usare C++ 11 ora (basta aggiungere -std = C++ 0x nella riga di comando GCC). Se tu fossi fortunato, allora nulla sarebbe cambiato nel tuo codice. Anche se non si utilizzano le funzionalità di C++ 11, si può ancora trarre vantaggio dai miglioramenti delle prestazioni derivanti dai riferimenti rvalue e dalla semantica del movimento.

Problemi correlati