[meta.trans]
template<class T>
struct type_identity;
The member typedef type denotes T.
template<class T>
struct decay;
Otherwise the member typedef type denotes remove_cv_t<U>.
template<bool B, class T = void> struct enable_if;
If B is true, the member typedef type denotes T; otherwise, there shall be no member type.
template<bool B, class T,
class F>
struct conditional;
template<class... T> struct common_type;
Unless this trait is specialized, the member type is defined or omitted as specified below.
If it is omitted, there shall be no member type.
Each type in the template parameter pack T shall be complete, cv void, or an array of unknown bound.
Unless this trait is specialized, there shall be no member type.
The member typedef-name type is defined or omitted as specified below.
Each type in the parameter pack T shall be complete or cv void.
If T is an enumeration type, the member typedef type denotes the underlying type of T ([dcl.enum]); otherwise, there is no member type.
If the expression INVOKE(declval<Fn>(), declval<ArgTypes>()...) ([func.require]) is well-formed when treated as an unevaluated operand ([expr.context]), the member typedef type denotes the type decltype(INVOKE(declval<Fn>(), declval<ArgTypes>()...)); otherwise, there shall be no member type.
Access checking is performed as if in a context unrelated to Fn and ArgTypes.
Only the validity of the immediate context of the expression is considered.
Preconditions: Fn and all types in the template parameter pack ArgTypes are complete types, cv void, or arrays of unknown bound.
template<class Fn, class Tuple>
struct apply_result;
If tuple-like<Tuple> is true and the expression INVOKE(declval<Fn>(), ELEMS-OF(Tuple)...) ([func.require]) is well-formed when treated as an unevaluated operand ([expr.context]), the member typedef type denotes the type decltype(INVOKE(declval<Fn>(), ELEMS-OF(Tuple)...)); otherwise, there shall be no member type.
Access checking is performed as if in a context unrelated to Fn and Tuple.
Only the validity of the immediate context of the expression is considered.
Preconditions: Fn and Tuple are complete types, cv void, or arrays of unknown bound.
If T is a specialization reference_wrapper<X> for some type X, the member typedef type of unwrap_reference<T> denotes X&, otherwise type denotes T.