练习16.1
给出实例化的定义:当调用一个函数模板时,编译器会利用给定的函数实参来推断模板实参,用此实际参数代替模板参数来创建出一个新的“实例”,也就是一个真正可以调用的函数,这个过程称为实例画。
#include <string>
#include <iostream>
using namespace std;
//这是一个模板的前置声明,和函数的前置声明是一个道理
template<typename T>
constexpr
T Min(const T& ,const T&);
int main()
{
double d1 = 1.234;
double d2 = 2.323;
cout << Min(d1,d2) << endl;
return 0;
}
//这是模板的实现,前面已经声明过了,这里是实现,注意为了和内置的min函数区别,这里函数名字为Min,
//如果函数名字是min,编译可能会有ambigous
template<typename T>
constexpr
T Min(const T& t1,const T& t2)
{
if(t1 < t2)
return t1;
if(t2 < t1)
return t2;
return t1;
}
课后习题16.4自己编写答案
#include <string>
#include <iostream>
#include <vector>
using namespace std;
template<typ