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