boost::可选的函数返回

boost::optional return from function

本文关键字:函数 返回 boost      更新时间:2023-10-16

我正在查看一些生产代码,其中一个函数说它将返回boost::optional,但它只返回double:例如

boost::optional<double> Foo(){
   double a = 1.0;
   double b = 2.0;
   return a + b;
}

这种风格可以接受吗?有没有不安全的情况?

这是我喜欢使用的样式。返回的double将隐式转换为boost::optional,该值已设置并包含该double的值。我想不出在任何情况下这是不安全的。EDIT:当可选<>所持有的类型是bool-请参阅文档。

此转换将使用此boost::可选构造函数:

boost::optional ( T const& v )

其中在这种情况下T是双的。请注意,这个构造函数不是显式的,它的设计正是为了允许您的示例中的代码!

如果在其他地方,函数需要返回一个尚未设置的可选对象,则返回boost::optional()。

参考文献:

http://en.cppreference.com/w/cpp/language/implicit_cast-有关返回值,请参见项目符号3。