我使用< 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。那么为什么代码不编译呢?
std::numeric_limits::max()
是一个函数,因此您需要返回其调用的结果。这是使用调用运算符完成的:
value_t find_minimal_value() {
if (...) return numeric_limits<value_t>::max();
// ^^
}
错误消息意味着它无法将函数指针(即 int (*)() 转换为
无符号 int
。