我正在审查一些生产代码,其中一个函数说它将返回一个boost::optional,但它只返回一个double:例如
boost::optional<double> Foo(){
double a = 1.0;
double b = 2.0;
return a + b;
}
Run Code Online (Sandbox Code Playgroud)
这种可接受的风格/是否有任何不安全的情况?
我知道我们不能通过引用返回一个局部变量,因为它会超出范围.虽然我在返回传递的引用时有点困惑.例如,以下示例是合法的还是会导致未定义的行为?
classobject &function(classobject &obj) {
return obj;
}
Run Code Online (Sandbox Code Playgroud)