16.1 编译器用推断出的模板参数生成一个特定版本的函数,这个过程叫做实例化。
16.2
#include <iostream>
using namespace std;
template <typename T>
int compare(const T &v1, const T &v2)
{
if (v1 < v2) return -1;
if (v2 < v1) return 1;
return 0;
}
int main()
{
int i1 = 10, i2 = 11;
string s1 = "abc", s2 = "def";
cout << compare(i1, i2) << " " << compare(s1, s2) << endl;
return 0;
}
16.3 Sales_data未定义<运算符,运行时失败。
16.4
#include <iostream>
#include <vector>
#include <list>
using namespace std;
template <typename I, typename T>
I find(I beg, I end, T val)
{
auto iter = beg;
for (; iter != end; ++iter)
if (*iter == val)
break;
return iter;
}
int main()
{
vector<int> iv = {1, 2, 3, 4, 5};
list<st