C++ 数值限制:最大值和;从';int(*)无例外(真)和#x27;至';值{aka int}'&引用;
我使用C++ 数值限制:最大值和;从';int(*)无例外(真)和#x27;至';值{aka int}'&引用;,c++,templates,type-conversion,return-type,numeric-limits,C++,Templates,Type Conversion,Return Type,Numeric Limits,我使用typedef unsigned int value\u t和一个函数 value_t find_minimal_value(...) { ... if(...) return numeric_limits<value_t>::max; ... } value\u找不到最小值(…){ ... 如果(…)返回数值限制::max; ... } 编译器拒绝编译它,并说:从'int(*)noexcept(true)'到'value_t{aka int}的转换
typedef unsigned int value\u t代码>和一个函数
value_t find_minimal_value(...) {
...
if(...) return numeric_limits<value_t>::max;
...
}
value\u找不到最小值(…){
...
如果(…)返回数值限制::max;
...
}
编译器拒绝编译它,并说:从'int(*)noexcept(true)'到'value_t{aka int}的转换无效
这是什么意思?查看numeric\u limits类,min()
函数应返回通过模板typename传递给它的类型变量,因此在本例中value\u t
。那么为什么代码不编译呢?std::numeric\u limits::max()
是一个函数,因此需要返回调用它的结果。这是通过呼叫接线员完成的:
value_t find_minimal_value() {
if (...) return numeric_limits<value_t>::max();
// ^^
}
value\u找不到最小值(){
if(…)返回数值限制::max();
// ^^
}
错误消息意味着它无法将函数指针(即int(*)(
)转换为无符号int
std::numeric\u limits::max()
是一个函数,因此您需要返回其调用的结果。这是使用调用运算符完成的:
value_t find_minimal_value() {
if (...) return numeric_limits<value_t>::max();
// ^^
}
value\u找不到最小值(){
if(…)返回数值限制::max();
// ^^
}
错误消息意味着它无法将函数指针(即int(*)(
转换为unsigned int
std::numeric\u limits::max()
是一个函数。@Nemo这太荒谬了,谢谢。std::numeric\u limits::max()
是一个函数。@Nemo这太荒谬了,谢谢。