From Jason Turner

[depr.meta.types]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmprucbzk45/{from.md → to.md} +33 -0
tmp/tmprucbzk45/{from.md → to.md} RENAMED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ## Deprecated type traits <a id="depr.meta.types">[[depr.meta.types]]</a>
2
+
3
+ The header `<type_traits>` has the following addition:
4
+
5
+ ``` cpp
6
+ namespace std {
7
+ template <class T> struct is_literal_type;
8
+
9
+ template <class T> constexpr bool is_literal_type_v = is_literal_type<T>::value;
10
+
11
+ template <class> struct result_of; // not defined
12
+ template <class Fn, class... ArgTypes> struct result_of<Fn(ArgTypes...)>;
13
+
14
+ template <class T> using result_of_t = typename result_of<T>::type;
15
+ }
16
+ ```
17
+
18
+ *Requires:* For `is_literal_type`, `remove_all_extents_t<T>` shall be a
19
+ complete type or cv `void`. For `result_of<Fn(ArgTypes...)>`, `Fn` and
20
+ all types in the parameter pack `ArgTypes` shall be complete types,
21
+ cv `void`, or arrays of unknown bound.
22
+
23
+ `is_literal_type<T>` is a `UnaryTypeTrait` ([[meta.rqmts]]) with a base
24
+ characteristic of `true_type` if `T` is a literal type (
25
+ [[basic.types]]), and `false_type` otherwise. The partial specialization
26
+ `result_of<Fn(ArgTypes...)>` is a `TransformationTrait` whose member
27
+ typedef `type` is defined if and only if
28
+ `invoke_result<Fn, ArgTypes...>::type` is defined. If `type` is defined,
29
+ it names the same type as `invoke_result_t<Fn, ArgTypes...>`.
30
+
31
+ The behavior of a program that adds specializations for
32
+ `is_literal_type` or `is_literal_type_v` is undefined.
33
+