mir*_*gee 2 c++ templates return-type type-conversion numeric-limits
我有一个使用定义的类型typedef unsigned int value_t;和一个函数
value_t find_minimal_value(...) {
    ...
    if(...) return numeric_limits<value_t>::max;
    ...
}
编译器拒绝编译它,说:从 'int (*)()noexcept (true)' 到 'value_t {aka int}' 的无效转换。
这是什么意思?查看 numeric_limits 类,该min()函数应该返回一个通过模板 typename 传递给它的类型的变量,所以value_t在这种情况下。那么为什么代码不能编译?
std::numeric_limits::max()是一个函数,所以你需要返回它的调用结果。这是使用调用运算符完成的:
value_t find_minimal_value() {
    if (...) return numeric_limits<value_t>::max();
    //                                          ^^
}
该错误消息意味着它无法将函数指针(即转换int (*)()为unsigned int.
| 归档时间: | 
 | 
| 查看次数: | 459 次 | 
| 最近记录: |