For class templates, member functions are instantiated only when they are used. This, of course, saves time and space.
using namespace std;

template
<typename T>
class myTemplate
{
private:
typename T m_t;
public:
myTemplate(T t):m_t(t){};
T AddOne(){
return m_t + 1;
}
void Output(){cout<<m_t<<endl;}
};

int main()
{
myTemplate
<int> i(10);
i.AddOne();
i.Output();
myTemplate
<string> s("temp");
//s.AddOne(); // Compile error becasue std::string has no operator + with int type
s.Output(); // however, this line has no issue
return 10;
}

相关文章: