2009-06-02 9 views
5

La maggior parte dei compilatori already support C++0x. Hai iniziato a usare C++ 0x o stai aspettando la definizione di x? Devo fare un po 'di refactoring del mio codice; dovrei iniziare a utilizzare le nuove funzionalità?Hai iniziato a utilizzare C++ 0x?

+13

No, non ci sono ancora TUTTI i compilatori che supportano completamente C++ 0x. Diversi compilatori hanno implementato un parziale SUBSET delle funzionalità di C++ 0x, ma non quasi tutto. Inoltre, lo standard non è ancora finito e potrebbe cambiare. –

+1

Sono a corto di tempo prima che debbano rinominarlo C++ 1x. –

+5

Sarà C++ 0a se è in ritardo –

risposta

8

C++ 0x non è ancora uno standard completo. È probabile che ci saranno molte revisioni prima che venga rilasciato uno standard internazionale accettato. Quindi tutto dipende, per cosa stai scrivendo il codice? Se si tratta di un incarico di lavoro, vorrei attenermi al normale C++, attendere che lo standard sia impostato e dare alla comunità di programmazione il tempo necessario per adattarsi. Non è un codice refactoring che devi veramente implementare, potrebbe darti un sacco di problemi.

Tuttavia penso che C++ 0x sia fantastico da giocare e inoltre non può fare male conoscere la sintassi quando 0x è accettato globalmente.

+3

Il piano è per lo standard che verrà rilasciato verso la fine di quest'anno e non ci si aspetta che ci siano molte revisioni. Hanno già preso una bozza e sono stati rivisti una o due volte. Più tardi quest'anno, lo metteranno in votazione in ISO, e ci si aspetta che vi passi senza problemi. – jalf

3

Continuerò a scrivere codice di produzione fino a '0x + y, dove y è quando lavorano i bug fuori dal compilatore e lo portano in complience standard (qualunque sia lo standard).

Ma per lo sviluppo? Lo uso per giocare, scrivere project euler, ecc. Lo uso anche su presentazioni e newsgroup.

1

Inizierò a utilizzarlo quando Visual Studio COMPLETAMENTE lo supporta. Al momento VS10 supporta solo alcune funzionalità.

+0

Ho pensato anche in questo modo. Ma aspettare la piena implementazione potrebbe prendere un buon tempo (la mia opinione è che ci vorranno anni e forse ci saranno alcune piccole funzionalità usate di rado che non saranno mai implementate in alcuni compilatori!). Quindi userò tutte le funzionalità che sono disponibili in tutti i compilatori coinvolti. (Difficilmente dovremo usare GCC 3.4.5 per il nostro sviluppo integrato: - ((() – mmmmmmmm

4

Ho iniziato a utilizzare nullptr, utilizzando #define nullptr 0 per quei compilatori (ad esempio la maggior parte) che non lo supportano ancora.

+0

+1: attualmente sto pensando di fare lo stesso – mmmmmmmm

+0

Fare lo stesso. –

1

Siamo ancora in procinto di passare da VS6 a VS 2005. Probabilmente non useremo esclusivamente compilatori C++ 0x per nuovi lavori fino alla fine del 201x.

4

Dal collegamento che hai fornito, sembra che tu intenda in realtà TR1, non proprio C++ 0x. E , sto usando la maggior parte delle nuove librerie TR1 per un po 'di tempo, perché molte di esse sono ex librerie Boost.

E posso solo incoraggiare tutti a usarli pure.

3

Ci sono pochissimi compilatori che supportano qualcosa. In realtà VS supporta solo le librerie TR1, gcc supporta alcune funzionalità come variadic templatres, rvalue, auto e altre ancora. Il compilatore Intel ne ha alcuni.

Io per lo più iniziato ad usare i modelli variadic come:

#ifdef HAvE_VARIADIC 
template<typename... Args> 
void format(std::string,Args... args); 
#else 
template<typename T1> 
void format(std::string,T1 p1); 
template<typename T1,typename T2,> 
void format(std::string,T1 p1,T2 p2); 
... 
template<typename T1,typename T2,...,typename T10> 
void format(std::string,T1 p1,T2 p2,..., T10 p10); 
#endif 
2

Abbiamo giocato con C++ 0x molto e ora quando gcc supporta alcune delle caratteristiche che li usare come appena sono disponibili. Il motivo è semplice: con la parola chiave auto si risparmia un sacco di digitazione, con i riferimenti rvalue si ottengono miglioramenti delle prestazioni e con gli elenchi di inizializzazione e i modelli variadici meno la digitazione e il codice molto più leggibile.

In realtà gli obiettivi principali dello standard C++ 0x sono anche i nostri obiettivi, perché avremo vantaggi per i nostri concorrenti con queste caratteristiche. Ecco perché li useremo senza aspettare affatto. Naturalmente se hai bisogno di compatibilità multi piattaforma, questo passaggio non è accettabile. Nel caso in cui non ti interessa, usalo immediatamente e puoi vincere.

2

Sì, sto già utilizzando C++ 0x e rilasciando librerie e codice open source. Tutti i miei futuri progetti open source in C++ saranno scritti in questa variante.Dopo aver usato i parametri del modello variadic e decltype/auto non posso tornare indietro!