Genel olarak 2014'te piyasaya sürülecek bir C++ kütüphanesinde çalışıyorum, şu anda yapmak için tasarım seçimlerim var. C++ 14 ile piyasaya sürülecek çok faydalı araçlardan biri std::optional
. -std=c++1y
'u kullanarak hangi g++/libstdc++
sürümünü beklediğimi bilmek istiyorum.std :: uygulama durumu g ++/libstdC++ içinde isteğe bağlı?
cevap
Güncelleme (Ekim 2016):std::optional
nihai C++ 14 standardında değildi, bu yüzden -std=c++1y
kullanılamaz asla. Bunun yerine GCC 4.9, -std=c++1y
ile avilable olan std::experimental::optional
içerir.
GCC 7, , -std=c++1z
, yani C++ 17 içerecektir.
Orijinal cevap (Haziran 2013): Şu anda uygulanmayan var
GCC bagajına C++ 14 özelliklerin durumu için http://gcc.gnu.org/ml/libstdc++/2013-06/msg00032.html bakın. Uygulandığında, bir kişinin iş yapmak için gönüllü olması gerektiğinde, tahmin etmek imkansızdır.
beklerim, C++ 14 standardından kısa bir süre önce piyasaya sürülmesi gereken GCC 4.9 için yapılacaktır, ancak hiçbir garanti yoktur. GCC 4.8'e eklenmek pek olası değildir, ancak GCC 4.9'dan farklı olarak (yani GCC subversion gövdesi) __cplusplus
makrosu -std=c++11
ve -std=c++1y
için aynı değere sahiptir, bu nedenle GCC 4.8 için seçmeli olarak -std=c++1y
için özellikleri etkinleştirmenin bir yolu yoktur bir tek.
"Neden bunu SO üzerinde sorun" diye soralım - bu yüzden SO üzerinde cevap arayan kişiler bul! –
Bu, neden std :: optional 'ın gcc'de çalışmadığını araştırırken en popüler Google hit oldu! Bu yüzden burada sorulup cevaplandığına sevindim. –
Eğer soru en çok hit olan gcc-help listesinde sorulmuşsa. Neyse, bu cevap düne kadar yanlıştı, çünkü C++ 17'ye kadar std :: optional 'diye bir şey yoktu, bu yüzden çok yakın zamana kadar herhangi bir derleyicide çalışmadı. –
Etiketi, C++ 14 etiketi wiki'sine bağlanan Meta tartışma başına C++ 1y olarak değiştirdim, bu da Nihai Taslak Standart serbest bırakılıncaya kadar [tag: C++ 14] kullanılmamasına karar vermesiyle sonuçlandı. – chris
, referans uygulamasını kullanmak isteyen varsa, burası (https://github.com/akrzemi1/Optional/). – PeterT