提问者:小点点

numeric_limits::max和“从' int (*)()noexcept (true)'到' value_t {aka int} '的转换无效”


我使用< code>typedef unsigned int value_t定义了一个类型;和一个函数

value_t find_minimal_value(...) {
    ...
    if(...) return numeric_limits<value_t>::max;
    ...
}

编译器拒绝编译它,说:无效的转换从'int(*)()(true)'到'value_t{aka int}'。

这是什么意思?查看numeric_limits类,< code>min()函数应该返回一个通过template typename传递给它的类型的变量,在本例中是< code>value_t。那么为什么代码不编译呢?


共1个答案

匿名用户

std::numeric_limits::max() 是一个函数,因此您需要返回其调用的结果。这是使用调用运算符完成的:

value_t find_minimal_value() {
    if (...) return numeric_limits<value_t>::max();
    //                                          ^^
}

错误消息意味着它无法将函数指针(即 int (*)() 转换为无符号 int