A template definition:
template <class T> class vector { ... }
specialized:
template <> class vector<bool> { ... }
The real template definition:
template <class T, class Allocator = allocator<T> > class vector {... }
specialized for T and the default allocator:
template <> class vector<bool, allocator<bool> > // note space, not ">>" { ... }
The real template definition:
template <class T, class Allocator = allocate<T> > // note space class vector { ... }
specialized for T, but not for Allocator:
template <class Allocator> class vector<bool, Allocator> { ... } template <class T, class Allocator> class vector<T*, Allocator> { ... }