Bruce Eckel's Thinking in C++, 2nd Ed | Contents | Prev | Next |
//: C19:DelayedInstantiation.cpp // Member functions of class templates are not // instantiated until they're needed. class X { public: void f() {} }; class Y { public: void g() {} }; template <typename T> class Z { T t; public: void a() { t.f(); } void b() { t.g(); } }; int main() { Z<X> zx; zx.a(); // Doesn't create Z<X>::b() Z<Y> zy; zy.b(); // Doesn't create Z<Y>::a() } ///:~