From Jason Turner

[meta.type.synop]

Diff to HTML by rtfpessoa

Files changed (1) hide show
  1. tmp/tmpssj488j2/{from.md → to.md} +55 -0
tmp/tmpssj488j2/{from.md → to.md} RENAMED
@@ -7,10 +7,11 @@ namespace std {
7
  typedef integral_constant<bool, true> true_type;
8
  typedef integral_constant<bool, false> false_type;
9
 
10
  // [meta.unary.cat], primary type categories:
11
  template <class T> struct is_void;
 
12
  template <class T> struct is_integral;
13
  template <class T> struct is_floating_point;
14
  template <class T> struct is_array;
15
  template <class T> struct is_pointer;
16
  template <class T> struct is_lvalue_reference;
@@ -40,10 +41,11 @@ namespace std {
40
  template <class T> struct is_pod;
41
  template <class T> struct is_literal_type;
42
  template <class T> struct is_empty;
43
  template <class T> struct is_polymorphic;
44
  template <class T> struct is_abstract;
 
45
 
46
  template <class T> struct is_signed;
47
  template <class T> struct is_unsigned;
48
 
49
  template <class T, class... Args> struct is_constructible;
@@ -95,27 +97,62 @@ namespace std {
95
  template <class T> struct remove_cv;
96
  template <class T> struct add_const;
97
  template <class T> struct add_volatile;
98
  template <class T> struct add_cv;
99
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  // [meta.trans.ref], reference modifications:
101
  template <class T> struct remove_reference;
102
  template <class T> struct add_lvalue_reference;
103
  template <class T> struct add_rvalue_reference;
104
 
 
 
 
 
 
 
 
105
  // [meta.trans.sign], sign modifications:
106
  template <class T> struct make_signed;
107
  template <class T> struct make_unsigned;
108
 
 
 
 
 
 
109
  // [meta.trans.arr], array modifications:
110
  template <class T> struct remove_extent;
111
  template <class T> struct remove_all_extents;
112
 
 
 
 
 
 
113
  // [meta.trans.ptr], pointer modifications:
114
  template <class T> struct remove_pointer;
115
  template <class T> struct add_pointer;
116
 
 
 
 
 
 
117
  // [meta.trans.other], other transformations:
118
  template <std::size_t Len,
119
  std::size_t Align = default-alignment> // see [meta.trans.other]
120
  struct aligned_storage;
121
  template <std::size_t Len, class... Types> struct aligned_union;
@@ -124,10 +161,28 @@ namespace std {
124
  template <bool, class T, class F> struct conditional;
125
  template <class... T> struct common_type;
126
  template <class T> struct underlying_type;
127
  template <class> class result_of; // not defined
128
  template <class F, class... ArgTypes> class result_of<F(ArgTypes...)>;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
129
  } // namespace std
130
  ```
131
 
132
  The behavior of a program that adds specializations for any of the class
133
  templates defined in this subclause is undefined unless otherwise
 
7
  typedef integral_constant<bool, true> true_type;
8
  typedef integral_constant<bool, false> false_type;
9
 
10
  // [meta.unary.cat], primary type categories:
11
  template <class T> struct is_void;
12
+ template <class T> struct is_null_pointer;
13
  template <class T> struct is_integral;
14
  template <class T> struct is_floating_point;
15
  template <class T> struct is_array;
16
  template <class T> struct is_pointer;
17
  template <class T> struct is_lvalue_reference;
 
41
  template <class T> struct is_pod;
42
  template <class T> struct is_literal_type;
43
  template <class T> struct is_empty;
44
  template <class T> struct is_polymorphic;
45
  template <class T> struct is_abstract;
46
+ template <class T> struct is_final;
47
 
48
  template <class T> struct is_signed;
49
  template <class T> struct is_unsigned;
50
 
51
  template <class T, class... Args> struct is_constructible;
 
97
  template <class T> struct remove_cv;
98
  template <class T> struct add_const;
99
  template <class T> struct add_volatile;
100
  template <class T> struct add_cv;
101
 
102
+ template <class T>
103
+ using remove_const_t = typename remove_const<T>::type;
104
+ template <class T>
105
+ using remove_volatile_t = typename remove_volatile<T>::type;
106
+ template <class T>
107
+ using remove_cv_t = typename remove_cv<T>::type;
108
+ template <class T>
109
+ using add_const_t = typename add_const<T>::type;
110
+ template <class T>
111
+ using add_volatile_t = typename add_volatile<T>::type;
112
+ template <class T>
113
+ using add_cv_t = typename add_cv<T>::type;
114
+
115
  // [meta.trans.ref], reference modifications:
116
  template <class T> struct remove_reference;
117
  template <class T> struct add_lvalue_reference;
118
  template <class T> struct add_rvalue_reference;
119
 
120
+ template <class T>
121
+ using remove_reference_t = typename remove_reference<T>::type;
122
+ template <class T>
123
+ using add_lvalue_reference_t = typename add_lvalue_reference<T>::type;
124
+ template <class T>
125
+ using add_rvalue_reference_t = typename add_rvalue_reference<T>::type;
126
+
127
  // [meta.trans.sign], sign modifications:
128
  template <class T> struct make_signed;
129
  template <class T> struct make_unsigned;
130
 
131
+ template <class T>
132
+ using make_signed_t = typename make_signed<T>::type;
133
+ template <class T>
134
+ using make_unsigned_t = typename make_unsigned<T>::type;
135
+
136
  // [meta.trans.arr], array modifications:
137
  template <class T> struct remove_extent;
138
  template <class T> struct remove_all_extents;
139
 
140
+ template <class T>
141
+ using remove_extent_t = typename remove_extent<T>::type;
142
+ template <class T>
143
+ using remove_all_extents_t = typename remove_all_extents<T>::type;
144
+
145
  // [meta.trans.ptr], pointer modifications:
146
  template <class T> struct remove_pointer;
147
  template <class T> struct add_pointer;
148
 
149
+ template <class T>
150
+ using remove_pointer_t = typename remove_pointer<T>::type;
151
+ template <class T>
152
+ using add_pointer_t = typename add_pointer<T>::type;
153
+
154
  // [meta.trans.other], other transformations:
155
  template <std::size_t Len,
156
  std::size_t Align = default-alignment> // see [meta.trans.other]
157
  struct aligned_storage;
158
  template <std::size_t Len, class... Types> struct aligned_union;
 
161
  template <bool, class T, class F> struct conditional;
162
  template <class... T> struct common_type;
163
  template <class T> struct underlying_type;
164
  template <class> class result_of; // not defined
165
  template <class F, class... ArgTypes> class result_of<F(ArgTypes...)>;
166
+
167
+ template <std::size_t Len,
168
+ std::size_t Align = default-alignment > // see [meta.trans.other]
169
+ using aligned_storage_t = typename aligned_storage<Len,Align>::type;
170
+ template <std::size_t Len, class... Types>
171
+ using aligned_union_t = typename aligned_union<Len,Types...>::type;
172
+ template <class T>
173
+ using decay_t = typename decay<T>::type;
174
+ template <bool b, class T = void>
175
+ using enable_if_t = typename enable_if<b,T>::type;
176
+ template <bool b, class T, class F>
177
+ using conditional_t = typename conditional<b,T,F>::type;
178
+ template <class... T>
179
+ using common_type_t = typename common_type<T...>::type;
180
+ template <class T>
181
+ using underlying_type_t = typename underlying_type<T>::type;
182
+ template <class T>
183
+ using result_of_t = typename result_of<T>::type;
184
  } // namespace std
185
  ```
186
 
187
  The behavior of a program that adds specializations for any of the class
188
  templates defined in this subclause is undefined unless otherwise