Let TS denote tuple_size<T> of the cv-unqualified type T.
If the expression TS::value is well-formed
when treated as an unevaluated operand, then
each specialization of the template meets the Cpp17UnaryTypeTrait requirements ([meta.rqmts])
with a base characteristic of
The compilation of the expression can result in side effects
such as the instantiation of class template specializations and
function template specializations, the generation of implicitly-defined functions, and so on.
Such side effects are not in the “immediate context” and
can result in the program being ill-formed.