2012-04-19 15 views
7

Come si verifica la presenza di singole funzionalità del linguaggio C++ 0x/C++ 11? So che Clang ha un bel sistema per questo. Che dire di GCC, Visual Studio o Boost? Immagino che un modo per farlo sia rilevare la versione del compilatore e collegarla alle funzionalità introdotte in quella versione. Ma questo è ingombrante. Qualcuno lo ha già fatto?Controllo funzionalità C++ 11

+1

Risposta diretta sarebbe scrivere un codice con quella funzione e compilarlo. – iammilind

+0

Perché questa domanda dovrebbe essere chiusa? –

+0

@ Nordlöw: due persone hanno votato per chiuderlo come duplicato di [questa domanda] (http://stackoverflow.com/q/6095885/636019). – ildjarn

risposta

3

boost config viene fornito con uno script per verificare alcune funzionalità di C++ 11, ma non tutte.

Genera un file di configurazione con macro per ciascuna funzionalità.

+0

Penso che volevi scrivere qualcosa dopo * Vedi: *. Comunque, sì, Boost.Config è probabilmente la migliore scommessa. I ragazzi di Boost già rintracciano tali informazioni in modo da non doverlo fare: insinuano la squadra del compilatore per sapere con precisione quando è abbastanza stabile da essere pubblicizzata, o nel caso di Clang richiede nuove flag di controllo. –

+0

In realtà era un residuo di una bozza-risposta. Lo cancellerò. Grazie. – mirk

3

Il tuo strumento di compilazione potrebbe essere d'aiuto.

CMake ha il comando try_compile che consente di verificare se un esempio di codice verrà compilato e impostato una variabile in base al risultato della compilazione.

Al momento ho appena utilizzato le funzionalità più comunemente supportate come la digitazione auto.

Spesso è possibile utilizzare Boost per sostituire le funzionalità della libreria mancanti e questa potrebbe essere l'opzione migliore per alcuni anni mentre i compilatori e le librerie vengono aggiornati e gli errori risolti.

Il C++ 11 caratteristica lista di compatibilità per il GCC è qui: http://gcc.gnu.org/projects/cxx0x.html

Nota l'avvertimento:

Importante: il supporto del GCC per C++ 11 è ancora in fase sperimentale. Alcune funzionalità sono state implementate in base a proposte iniziali e non verrà effettuato alcun tentativo per mantenere la compatibilità con le versioni precedenti quando vengono aggiornate per corrispondere allo standard C++ 11 finale.