boost::可选的函数返回
boost::optional return from function
我正在查看一些生产代码,其中一个函数说它将返回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。
相关文章:
- 从函数返回const char*数组
- 检查函数返回类型是否与STL容器类型值相同
- 从 c 或 cpp 系列子函数返回到主函数
- 从函数返回任意简单类型的数据
- 警告:在函数返回类型 [-Wignore 限定符] 时忽略类型限定符
- 从 C++ 中的函数返回数组地址问题
- VirtDisk.h QueryChangesVirtualDisk() 函数返回 RangeCount 为 0
- 为什么glGetSubroutineIndex为不同的函数返回相同的值?
- 在 c++ 中将函数返回类型指定为模板参数
- 从封装在对象中的函数 C++ 返回时为空的列表
- 为什么向量内部的指针在从函数返回时会发生变化?
- 函数返回的 rvalue 引用(表达式)是 xvalue - 但没有标识?
- 程序中的布尔函数返回输入的范围无论如何都是无效的
- 寿命延长从函数返回引用
- 程序不向函数返回值
- 字符串函数返回奇怪的值
- 类的大问题,以及从空函数c++返回
- 为什么在尝试测量函数返回所需的时间时,我的运行时编号是错误的?
- C++二叉搜索树模板从函数返回节点
- NVCC 错误:string_view.h:constexpr 函数返回是非常量