cpp/types/disjunction

Forms the logical disjunction of the type traits, effectively performing a logical OR on the sequence of traits.

The specialization has a public and unambiguous base that is
 * if, ; otherwise
 * the first type in  for which, or  if there is no such type.

The member names of the base class, other than and, are not hidden and are unambiguously available in.

Disjunction is short-circuiting: if there is a template type argument with, then instantiating  does not require the instantiation of  for.