模板将发生两次编译,分别在:
1.实例化前,先检查模板代码本身,查看语法是否正确。
2.实例化期间,检查模板代码,查看是否所有的调用都有效。
例如:
template<typename T>
T max(T a,T b)
{
a > b ? a : b;
}
int main()
{
max(3,5);//right
max(3.3,5.5)//right
std::complex<float>c1,c2;
max(c1,c2);//wrong 原因在于 complex类型不支持“>”操作
}