In order for a constrained template to be instantiated ([temp.spec]),
its associated constraints ([temp.constr.decl])
shall be satisfied as described in the following subclauses.
Forming the name of a specialization of
a class template,
a variable template, or
an alias template ([temp.names])
requires the satisfaction of its constraints.
Overload resolution ([over.match.viable])
requires the satisfaction of constraints
on functions and function templates.