[
Note 1:
For example,
template<class T, T* p, class U = T> class X { };
template<class T> void f(T* p = new T);
For example,
template<class T> class X : public Array<T> { };
template<class T> class Y : public T { };
The use of a template parameter as a base class implies that a class used as a template
argument must be defined and not just declared when the class template is instantiated
. —
end note]