2013-06-09 12 views
13

Mentre lavoro su una libreria C++ che verrà rilasciata pubblicamente nel 2014, attualmente ho scelte progettuali da fare. Uno degli strumenti molto utili che verranno rilasciati con C++ 14 è std::optional. Mi piacerebbe sapere con quale versione di g++/libstdc++ posso aspettarmi di averlo usando -std=c++1y.Stato di implementazione di std :: facoltativo in g ++/libstdC++?

+1

Ho cambiato il tag in C++ 1y per la discussione Meta collegata al tag C++ 14 wiki che ha portato alla decisione di non usare [tag: C++ 14] fino a quando non viene rilasciato Final Draft Standard. – chris

+1

se qualcuno vuole utilizzare l'implementazione di riferimento, è [qui] (https://github.com/akrzemi1/Optional/). – PeterT

risposta

14

Update (Ottobre 2016):std::optional non era in C++ 14 standard finale, quindi non è mai disponibile con -std=c++1y. Invece GCC 4.9 include std::experimental::optional che è disponibile con -std=c++1y.

GCC 7 includerà std::optional con -std=c++1z, ad esempio C++ 17.

risposta Originale (giugno 2013):

E 'attualmente implementato, vedere http://gcc.gnu.org/ml/libstdc++/2013-06/msg00032.html per lo stato di C++ 14 funzioni nel bagagliaio di GCC.

Quando viene implementato dipende da quando qualcuno si offre volontario per svolgere il lavoro, quindi è impossibile prevederlo.

avrei aspetterebbe sarà fatto per GCC 4.9, che dovrebbe essere rilasciato poco prima che lo standard C++ 14, ma non ci sono garanzie. È improbabile che venga aggiunto a GCC 4.8 sebbene sia già stato rilasciato e diversamente da GCC 4.9 (cioè il tronco di subversione GCC) la macro __cplusplus ha lo stesso valore per -std=c++11 e -std=c++1y quindi per GCC 4.8 non è possibile abilitare selettivamente le funzioni per -std=c++1y solo.

+4

"perché chiedere questo su SO" - così le persone che cercano risposte su SO lo trovano! –

+5

Questo è stato il migliore hit di Google quando stavo investigando sul perché 'std :: optional' non funzionasse in gcc! Quindi sono contento che sia stato chiesto e abbia risposto qui. –

+0

Se la domanda era stata posta nella lista di gcc-help sarebbe stata la migliore. Comunque, questa risposta è stata sbagliata fino a ieri, perché non esisteva nulla come 'std :: optional' fino a C++ 17, quindi non funzionava in nessun compilatore fino a poco tempo fa. –

Problemi correlati