Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 数值限制:最大值和;从';int(*)无例外(真)和#x27;至';值{aka int}'&引用;_C++_Templates_Type Conversion_Return Type_Numeric Limits - Fatal编程技术网

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这太荒谬了,谢谢。