Поскольку я работаю над библиотекой С++, которая будет опубликована публично в 2014 году, в настоящее время у меня есть выбор дизайна. Одним из очень полезных инструментов, который будет выпущен с С++ 14, является std::optional
. Я хотел бы знать, с какой версией g++/libstdc++
я могу рассчитывать на ее использование с помощью -std=c++1y
.
Статус реализации std:: optional в g++/libstdС++?
Ответ 1
Обновление (октябрь 2016): std::optional
не было в последнем стандарте С++ 14, поэтому он никогда не доступен с -std=c++1y
. Вместо этого GCC 4.9 включает std::experimental::optional
, который можно использовать с -std=c++1y
.
GCC 7 будет включать std::optional
с -std=c++1z
i.e С++ 17.
Оригинальный ответ (июн 2013):
В настоящее время он не реализован, см. http://gcc.gnu.org/ml/libstdc++/2013-06/msg00032.html для статуса функций С++ 14 в соединительной линии GCC.
Когда он реализуется, зависит от того, когда кто-то добровольно делает работу, поэтому предсказать невозможно.
Я ожидаю, что это будет сделано для GCC 4.9, который должен быть выпущен незадолго до стандарта С++ 14, но никаких гарантий нет. Это вряд ли добавится в GCC 4.8, хотя, как уже было выпущено, и в отличие от GCC 4.9 (т.е. Соединительной линии GCC) макрос __cplusplus
имеет то же значение для -std=c++11
и -std=c++1y
, поэтому для GCC 4.8 нет способа для выборочного включения функций только для -std=c++1y
.