//
显示具体化声明
template <> void Swap < Student > (Student & a, Student & b); // 互换两个结构体中的name成员
//显示实例化声明
template void Swap < Student > (Student m, Student n);
template <> void Swap < Student > (Student & a, Student & b); // 互换两个结构体中的name成员
//显示实例化声明
template void Swap < Student > (Student m, Student n);
//问题:
为什么(Student m, Student n) 不可以改为(Student &m, Student &n) 是不是这个声明就表示编译器会自动生成Student类型的函数定义?
================================================================================
如果把显示实例化(即:template void Swap < Student > (Student m, Student n))里的(Student m, Student n) 变成(Student & m, Student & n) 这将与上面的显示具体化
================================================================================
如果把显示实例化(即:template void Swap < Student > (Student m, Student n))里的(Student m, Student n) 变成(Student & m, Student & n) 这将与上面的显示具体化
(即:template
<>
void
Swap
<
Student
>
(Student
&
a, Student
&
b);)冲突
================================================================================ 参考文献:
C ++ primer plus 第八章函数探幽8. 5 .3节(具体化与实例化)的警告条目(中版书第253页)
================================================================================ 参考文献:
C ++ primer plus 第八章函数探幽8. 5 .3节(具体化与实例化)的警告条目(中版书第253页)