Annex D (normative) Compatibility features [depr]

D.13 Deprecated type traits [depr.meta.types]

The header <type_­traits> has the following addition:
namespace std {
  template<class T> struct is_literal_type;
  template<class T> constexpr bool is_literal_type_v = is_literal_type<T>::value;

  template<class> struct result_of;    // not defined
  template<class Fn, class... ArgTypes> struct result_of<Fn(ArgTypes...)>;
  template<class T> using result_of_t = typename result_of<T>::type;

  template<class T> struct is_pod;
  template<class T> inline constexpr bool is_pod_v = is_pod<T>::value;
}
The behavior of a program that adds specializations for any of the templates defined in this subclause is undefined, unless explicitly permitted by the specification of the corresponding template.
template<class T> struct is_literal_type;
Requires: remove_­all_­extents_­t<T> shall be a complete type or cv void.
is_­literal_­type<T> is a UnaryTypeTrait ([meta.rqmts]) with a base characteristic of true_­type if T is a literal type, and false_­type otherwise.
template<class Fn, class... ArgTypes> struct result_of<Fn(ArgTypes...)>;
Requires: Fn and all types in the parameter pack ArgTypes shall be complete types, cv void, or arrays of unknown bound.
The partial specialization result_­of<Fn(ArgTypes...)> is a TransformationTrait ([meta.rqmts]) whose member typedef type is defined if and only if invoke_­result<Fn, ArgTypes...>​::​type ([func.invoke]) is defined.
If type is defined, it names the same type as invoke_­result_­t<Fn, ArgTypes...>.
template<class T> struct is_pod;
Requires: remove_­all_­extents_­t<T> shall be a complete type or cv void.
is_­pod<T> is a UnaryTypeTrait ([meta.rqmts]) with a base characteristic of true_­type if T is a POD type, and false_­type otherwise.
A POD class is a class that is both a trivial class and a standard-layout class, and has no non-static data members of type non-POD class (or array thereof).
A POD type is a scalar type, a POD class, an array of such a type, or a cv-qualified version of one of these types.
[Note
:
It is unspecified whether a closure type ([expr.prim.lambda.closure]) is a POD type.
end note
]