TITLE: New terminology for template declaration/definition This tip describes some new terminology for declaring, defining, and using templates. It is provided here only to make things more confusing. To make things brief, these terms are "defined" by example. For more information, see "The C++ Report", v5, n2, p. 23 - 26. 1. template declarations function template template T* save (const T&); class template template class stack; 2. template definitions class template definition template class stack { public: void push (const T&); T pop (); stack (); ~stack (); private: T* data; unsigned top; }; function template definition template T* save (const T& tval) { return new T (tval); } template member function definition template void stack :: push (const T& val) { data [++top] = val; } 3. specialization extern stack siv; 4. user specialization class stack { public: void push (const char); // note not char& char pop (); stack (); ~stack (); private: char* big_data; char [16] short_data; (sic) unsigned top; }; 5. instantiation The final term we need is instantiation, which we will use to describe the process of generating the code needed to implement the particular template specializations the programmer needs. This should be transparent to the programmer...