假设我有一个带有签名的函数[[noreturn]] void die(int exit_code);
。如果我写声明:
check_some_condition() or die(EXIT_FAILURE);
我收到一条错误消息(使用 GCC 5.4.0):
error: expression must have bool type (or be convertible to bool)
但是为什么要检查类型,如果编译器知道进入该函数,则返回值无关紧要;如果条件检查出来,返回类型再次无关紧要吗?
编辑:有关标准的措辞是否[[noreturn]]
没有解决这一点,即放宽对类型的要求以使此类表达“合法化”?