cpp/types/conjunction

Forms the of the type traits, effectively performing a logical AND 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.

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