C++ 如何为两种或更多数据类型创建函数模板?
我想使用具有两种或更多数据类型的函数模板。所以我举了一个例子,它获取两个'T'类型的数据,然后返回'T1'类型的数据。以下是代码:C++ 如何为两种或更多数据类型创建函数模板?,c++,templates,C++,Templates,我想使用具有两种或更多数据类型的函数模板。所以我举了一个例子,它获取两个'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()
#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);
}
#包括
使用名称空间std;
模板T get(t2A,t2B)
{
if(acout考虑到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;
}
因此,当然,函数的返回类型是float,输出就是cout如何向您显示它。但是您知道,您可以高度自定义cout如何使用#include
打印数据。您在调用它时显式地告诉编译器第二个参数是int
。这两个参数都是10.2
和>20.3
在函数中被强制为int
,然后当您返回
时,这些(现在)int
被强制为float
,因此您在过程中丢失了.3
。此外,get(t2a,t2b)
应该是get(ta,t2b)
非常感谢。现在我可以理解为什么结果的类型是int
。但很抱歉,我不知道如何将T设置为float
。此代码只是为了练习。我制作此代码是为了制作函数模板,输入参数的类型是T
,返回类型是T2
20 float
20