Specializations
Supporting special cases is particularly important when
dealing with class templates.
For some types, we may find that certain member
functions need partial specialization.
For other types, we may find that additional data members
are required.
To support special cases, we can implement specific
instantiations of our member functions and classes to
customize the functionality for a given set of data types
and values.