4
不允许隐式转换返回
#include <optional> bool f() { std::optional<int> opt; return opt; } 无法编译: 'return': cannot convert from 'std::optional<int>' to 'bool' 咨询参考本来可以找到解释的,但我读了应该可以。 每当在上下文中使用某种类型T1的表达式但不接受该类型但接受某种其他类型的T2时,都会执行隐式转换。特别是: 当调用以T2作为参数声明的函数时,将表达式用作参数时; 当表达式用作期望T2的运算符的操作数时; 初始化类型为T2的新对象时,包括返回T2的函数中的return语句; 当在switch语句中使用该表达式时(T2是整数类型); 在if语句或循环中使用该表达式时(T2为bool)。