Basic Template Terminology
1. "Class Template" or "Template Class"?
class template: the class is a template.
template class: a synonym(同义词) for class template; to refer to classes generated from templates(由模板产生(实例化)的类). to refer to classes with a name that is a template-id.
Because of this imprecision, template class is avoided in this book.
2. Instantiation and specialzation
Instantiation: 实例化. The process of creating a regular class, function, or member function from a template by substituting actual values for its arguments is called template instantiation.
Specialzation:特例,在Chapter 3中有描述
3. Declarations vs Definitions
declaration is a C++ construct that introduces or reintroduceds a name into a C++ scope.
class C; // a declaration of C as a class
void f(int p); // a declaration of f() as a function and p as a named parameter
extern int v; // a declaration of v as a variable
Declarations become definitions when the details of their structure are made known or, in the case of variables, when storage space must be allocated.
class C{}; // definition(and declaration) of class C
void f(int p){ // defini
std::cout<< p << std::endl;
}
extern int v = 1; // an initializer makes this a definition for v
int w; // global variable declaration not preceded by extern are also definitions By extension, the declaration of a class template or function template is called a definition if it has a body, Hence,
template <typename T>
void func(T);
is a declaration that is not a definition, whereas
template <typename T>
class S{};
is in fact a definition