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