Specializations
To specialize a member function, we must define the
specialized version of the function. A partial specialization
specifies what it expects as the template's actual arguments
following the class identifier. These arguments must be
specified in the order that corresponds to the formal
template argument list.
Not all arguments must be specialized; in these situations,
the identifiers specified in the formal template argument
list may be used instead of specific types and/or values.
When all arguments are specialized, we have an explicit
specialization; in this case, the template's formal argument
list is empty (e.g., template <>).