相关疑难解决方法(0)

返回时不允许隐式转换

#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)。

c++ language-lawyer implicit-conversion c++17

25
推荐指数
2
解决办法
2127
查看次数

标签 统计

c++ ×1

c++17 ×1

implicit-conversion ×1

language-lawyer ×1