Shm*_*opy 6 c++ templates instantiation member-functions
假设我有:
template <typename T>
class A
{
//Do something with T
};
Run Code Online (Sandbox Code Playgroud)
我知道编译器会class A<T>
为T
代码中定义的每个不同生成一个.
如果我有:
class B
{
template <typename T>
void f() { /* Do something with T */ }
};
Run Code Online (Sandbox Code Playgroud)
对于每个被调用的不同,是否只有一个定义class B
但是多个重载?f()
T
是的,每次实例化都会有编译器生成f<T>
的定义。
根据编译器的不同,可以通过内联来优化,或者它可以在代码段中获取那么多空间。f()
f()
然而,我很少遇到这种设计,即在非模板类中有一个非静态模板成员函数(没有任何参数!)。