如何为两种或两种以上的数据类型创建函数模板



我想使用具有两种或两种以上数据类型的函数模板。所以我做了一个例子,它得到两个"T"型数据,然后返回"T1"型数据。这是代码:

#include <iostream>
using namespace std;
template <typename T, typename T2> T get(T2 a, T2 b)
{
if (a < b)
return b;
else
return a;
}
int main()
{
cout << get<float, int>(10.2, 20.3);
}

我希望此代码将两个"int type"数字中较大的一个返回到"float"类型。也就是说,我预计结果是"20.0"。但结果是20。我不明白为什么结果的类型是"int"。请更正我的代码以返回"float"类型"20.0"。也就是说,如果输入因子和返回值不同,我想知道如何指定返回值的数据类型。

考虑到int的奇怪输入类型,您的代码非常好。看看的输出

#include <iostream>
#include <boost/type_index.hpp>
using namespace std;
using boost::typeindex::type_id_with_cvr;
template <typename T, typename T2> T get(T2 a, T2 b)
{
if (a < b)
return b;
else
return a;
}
int main()
{
float test = 20.0;

cout << get<float, int>(10.2, 20.3) << " "
<< type_id_with_cvr<decltype(get<float,int>(10.2,20.3))>().pretty_name() << endl;
cout << test << endl;
}

哪个是

20 float
20

当然,函数的返回类型是float,输出就是cout向您显示的方式。但你知道,你可以高度定制cout如何用#include <iomanip>打印出你的数据。

最新更新