在g ++ / libstdc ++中std :: optional的实现状态?

时间:2013-06-09 20:09:25

标签: c++ g++ libstdc++ optional c++14

当我正在开发将于2014年左右公开发布的C ++库时,我目前正在做出设计选择。将与C ++ 14一起发布的非常有用的工具之一是std::optional。我想知道g++/libstdc++可以使用-std=c++1y获得的{{1}}版本。

2 个答案:

答案 0 :(得分:17)

更新(2016年10月): 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年6月):

目前尚未实现,请参阅http://gcc.gnu.org/ml/libstdc++/2013-06/msg00032.html了解GCC主干中C ++ 14功能的状态。

当它实施时,取决于某人志愿做什么工作,所以无法预测。

我希望期待它将在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选择性地启用功能。

答案 1 :(得分:3)

根据他们的libstdc++ status page GCC 7.1是第一个版本std::optional没有隐藏在std::experimental中,它支持__has_include(<optional>)功能测试。 GCC 7.3中添加了功能测试__cpp_lib_optional >= 201603