C++ 如何为两种或更多数据类型创建函数模板?

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()

我想使用具有两种或更多数据类型的函数模板。所以我举了一个例子,它获取两个'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);
}
#包括
使用名称空间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