具体见代码:
#include <iostream>
using namespace std;
template <typename T>
void Swap(T& a, T& b)
{
T tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 10;
float b = 20;
Swap(a, b); //自动推导调用
cout<<"ok"<<endl;
}
Swap只有一种类型,在调用该函数的时候a和b却为不同类型,此时模板不能完成参数类型自动推导,会报错:
error: no matching function for call to 'Swap(int&, float&)'