事实上 atemplate
在使用之前不会被实例化,例如,如果我有这个类模板:
template <typename T>
struct Pow{
T operator()(T const& x) const{ return x * x; }
};
void func(Pow<double>); // Pow<double> instantiated here?
void func(Pow<int>){} // Pow<int> instantiated here?
int main(){
Pow<int> pi; // instantiated here?
func(pi); // Pow<int> instantiated here
}
那么模板究竟是什么时候被实例化的呢?
那么是在声明
Pow<int>
时实例化的吗?func(Pow<int>)
如果我没有使用
Pow<int>
inmain()
那么它是否被实例化了,因为它使用 infunc
作为其参数的类型?