The usual mechanism for overriding a metafunction's behavior is class
template specialization — given a library-defined metafunction f,
it's possible to write a specialization of f for a specific type
user_type that would have the required semantics [4].

While this mechanism is always available, it's not always the most
convenient one, especially if it is desirable to specialize a
metafunction's behavior for a family of related types. A typical
example of it is numbered forms of sequence classes in MPL itself
(list0, ..., list50, et al.), and sequence classes in general.

A Tag Dispatched Metafunction is a concept name for an instance of
the metafunction implementation infrastructure being employed by the
library to make it easier for users and implementors to override the
behavior of library's metafunctions operating on families of specific
types.

The infrastructure is built on a variation of the technique commonly
known as tag dispatching (hence the concept name),
and involves three entities: a metafunction itself, an associated
tag-producing tag metafunctions, and the metafunction's
implementation, in the form of a Metafunction Class template
parametrized by a Tag type parameter. The metafunction redirects
to its implementation class template by invoking its specialization
on a tag type produced by the tag metafunction with the original
metafunction's parameters.