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