这些概念对我来说有点不清楚。在N4296::14.7 [temp.spec]
中,模板实例化的定义已经很清晰了:
实例化函数、类、类模板或成员模板的行为称为模板实例化。
如果我们有一个函数/变量/类模板,那么模板的实例化就是创建一个对象或函数。例如:
template<typename T> class U{ };
U<int> a; //instantiation
但是 N4296:14.7.1 [temp.inst]
指出(我强调):
除非类模板特化已经被显式实例化(14.7.2)或显式专门化(14.7.3),否则当在需要完全定义的对象类型的上下文中引用该特化时,或者当类类型的完整性影响程序语义时,类模板特化将隐式实例化。
什么是模板特化的实例化定义,而不仅仅是模板的实例化?