Подтвердить что ты не робот

Статус реализации std:: optional в g++/libstdС++?

Поскольку я работаю над библиотекой С++, которая будет опубликована публично в 2014 году, в настоящее время у меня есть выбор дизайна. Одним из очень полезных инструментов, который будет выпущен с С++ 14, является std::optional. Я хотел бы знать, с какой версией g++/libstdc++ я могу рассчитывать на ее использование с помощью -std=c++1y.

4b9b3361

Ответ 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.