非模板类里面的模板函数的内存模型?

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

iam*_*ind 1

是的,每次实例化都会有编译器生成f<T>的定义。 根据编译器的不同,可以通过内联来优化,或者它可以在代码段中获取那么多空间。f()
f()

然而,我很少遇到这种设计,即在非模板类中有一个非静态模板成员函数(没有任何参数!)。