[meta.rel]
template<class T, class U>
struct is_same;
T and U name the same type with the same cv-qualifications
Base is a base class of Derived ([class.derived]) without regard to cv-qualifiers or Base and Derived are not unions and name the same class type without regard to cv-qualifiers
If Base and Derived are non-union class types and are not (possibly cv-qualified versions of) the same type, Derived shall be a complete type.
Base is a virtual base class of Derived ([class.mi]) without regard to cv-qualifiers.
If Base and Derived are non-union class types, Derived shall be a complete type.
From and To shall be complete types, cv void, or arrays of unknown bound.
is_convertible_v<From, To> is true and the conversion, as defined by is_convertible, is known not to throw any exceptions ([expr.unary.noexcept])
From and To shall be complete types, cv void, or arrays of unknown bound.
T and U shall be complete types, cv void, or arrays of unknown bound.
Derived is unambiguously derived from Base without regard to cv-qualifiers, and each object of type Derived is pointer-interconvertible ([basic.compound]) with its Base subobject, or Base and Derived are not unions and name the same class type without regard to cv-qualifiers.
If Base and Derived are non-union class types and are not (possibly cv-qualified versions of) the same type, Derived shall be a complete type.
The expression INVOKE(declval<Fn>(), declval<ArgTypes>()...) ([func.require]) is well-formed when treated as an unevaluated operand ([expr.context])
Fn and all types in the template parameter pack ArgTypes shall be complete types, cv void, or arrays of unknown bound.
The expression INVOKE<R>(declval<Fn>(), declval<ArgTypes>()...) is well-formed when treated as an unevaluated operand
Fn, R, and all types in the template parameter pack ArgTypes shall be complete types, cv void, or arrays of unknown bound.
is_invocable_v<
Fn, ArgTypes...> is true and
the expression INVOKE(declval<Fn>(), declval<ArgTypes>()...)
is known not to throw any exceptions ([expr.unary.noexcept])
Fn and all types in the template parameter pack ArgTypes shall be complete types, cv void, or arrays of unknown bound.
is_invocable_r_v<
R, Fn, ArgTypes...> is true and
the expression INVOKE<R>(declval<Fn>(), declval<ArgTypes>()...)
is known not to throw any exceptions ([expr.unary.noexcept])
Fn, R, and all types in the template parameter pack ArgTypes shall be complete types, cv void, or arrays of unknown bound.
tuple-like<Tuple> is true and the expression INVOKE(declval<Fn>(), ELEMS-OF(Tuple)...) is well-formed when treated as an unevaluated operand.
Fn and Tuple shall be complete types, cv void, or arrays of unknown bound.
is_applicable_v<
Fn, Tuple> is true and
the expression INVOKE(declval<Fn>(), ELEMS-OF(Tuple)...)
is known not to throw any exceptions ([expr.unary.noexcept]).
Fn and Tuple shall be complete types, cv void, or arrays of unknown bound.