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++?
risposta
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.
"perché chiedere questo su SO" - così le persone che cercano risposte su SO lo trovano! –
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. –
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. –
- 1. Perché libstdC++ memorizza std :: elementi di tupla in ordine inverso?
- 2. std :: implementazione common_type
- 3. Argomento facoltativo in Drupal implementazione hook_menu
- 4. Come disattivare std :: experimental :: facoltativo?
- 5. Come ottenere -std = C++ 11 w/libstdC++?
- 6. C++ 11 rappresentazione std :: string interna (libstdC++)
- 7. std :: swap stranezza con G ++
- 8. cygwin g ++ std :: stoi errore": 'stoi' non è un membro di 'std
- 9. Debug tramite libstdC++
- 10. G ++, clang ++ e std :: function
- 11. std :: align non supportato da g ++ 4.9
- 12. std :: specializzazione facoltativo per i tipi di riferimento
- 13. std :: atomic support in g ++ 4.4.3
- 14. Implementazione di un no-op std :: ostream
- 15. EndInvoke() è facoltativo, di tipo facoltativo o sicuramente non facoltativo?
- 16. std :: addressof - strana implementazione
- 17. Come funziona questa implementazione di std :: is_class?
- 18. Stato di implementazione di "identificatore" Chiave
- 19. discrepanza di istream eof tra libC++ e libstdC++
- 20. Isnan è nello std :: namespace? Più in generale, quando è std: necessario, facoltativo o da evitare?
- 21. Cygwin: g ++ 5.2: 'to_string' non è un membro di 'std'
- 22. sovraccarico mancante const_iterator di std :: vector :: erase() con g ++ 4.8
- 23. -std = C++ 11 flag non riconosciuto in G 4.4.6
- 24. Verificare se la versione di libstdC++ utilizza uno standard std :: string C++ 11
- 25. Perché l'implementazione di libC++ di std :: string occupa la memoria 3x come libstdC++?
- 26. La compilazione del programma di regex in clang per libstdC++ in modalità C++ 14 causa errori
- 27. Ottenere lo stato di uno std :: future
- 28. Tipo di f g x = g. gx
- 29. Implementazione autonoma, compatibile con STL di std :: vector
- 30. come usare snprintf() in g ++ -std = C++ 11 versione 4.8.2
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
se qualcuno vuole utilizzare l'implementazione di riferimento, è [qui] (https://github.com/akrzemi1/Optional/). – PeterT