如何推断可以根据条件返回类型的函数的类型?

桑尼

我有一个模板函数,它需要两种数据类型-int和double,并返回较小的数据类型,现在,如何推断该函数将返回的类型?现在,我正在丢失小数点后的部分。

#include <iostream>

using namespace std;

template <class First, class Second>
First smaller(First a, Second b){
   return (a < b ? a : b);
}

int main () {
   int x = 100;
   double y = 15.5;
   cout<< smaller (x,y) << endl;

}
性情

三元运算符的标准行为是执行“常规算术转换”。在这种情况下,将提升int为a的方法double之所以与之相同,auto x=1/1.0;double因为提升了整数分子使其与double分母兼容

请参见C ++ 11中“ auto var = {condition}?1:1.0”的类型是什么的答案是double还是int?有“外行条款”和标准报价答案。两者都应该有所帮助。

但是,您要做的是将类型强制为“ First”:

template <class First, class Second>
First smaller(First a, Second b){
   return (a < b ? a : b);
}

查看您输入的返回类型smaller因此发生的事情是将其提升为a double,然后转换为int返回值。

看看这个:

#include <iostream>

template <class First, class Second>
First smaller(First a, Second b){
   return (a < b ? a : b);
}


template <class First, class Second>
auto smaller_auto(First a, Second b){
   return (a < b ? a : b);
}


int main() {
    int x=100;
    double y=15.5;

    std::cout<< smaller(x,y)<<std::endl; //First is int returns an int.

    std::cout<< smaller(y,x)<<std::endl;//First is double returns double.


    std::cout<< smaller_auto(x,y)<<std::endl; //Performs the usual arithemtic conversions (returns double).

    std::cout<< smaller_auto(y,x)<<std::endl;//Performs the usual arithemtic conversions (returns double).

    return 0;
}

预期产量:

15
15.5
15.5
15.5

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何基于函数的参数推断承诺的返回类型?

根据条件的方法返回类型

C ++模板可以推断返回类型吗?

Typescript从传递的函数返回类型推断返回类型

如何推断函数的返回类型?

如何基于包含泛型的参数推断函数的返回类型?

如何根据条件返回属性类型?

如何使函数根据具有子属性的数组推断类型?

可以返回多个不同对象的函数的返回类型的更好TypeScript推断

如何推断函数对象的返回类型?

如何根据参数类型转换函数的返回类型?

从枚举参数推断Typescript函数返回类型

无法推断函数返回类型

根据可变参数类型推断返回类型

如何将属性函数的返回类型推断为属性的类型?

如何使用提供的参数推断函数的返回类型?

根据类型防护推断函数的返回类型

Typescript:如何根据参数类型获取函数的返回类型?

是否可以推断打字稿中映射类型的函数的返回类型?

打字稿可以根据参数值推断函数的响应类型吗?

根据函数的返回值推断类型,其中函数参数是函数的记录

从函数返回类型推断模板参数类型

如何根据“类似函数”的参数推断函数模板的返回类型?

如何根据函数返回的对象指定类型

如何推断泛型函数的返回类型

有没有办法让 TypeScript 根据调用参数推断函数返回值的类型?

如何利用可区分联合来推断函数的返回类型

函数参数类型推断和条件类型

如何推断函数参数的类型?