32 _GLIBCXX_BEGIN_NAMESPACE_TR1
46 typedef struct {
char __arr[2]; } __two;
49 #define _DEFINE_SPEC_0_HELPER \
52 #define _DEFINE_SPEC_1_HELPER \
53 template<typename _Tp>
55 #define _DEFINE_SPEC_2_HELPER \
56 template<typename _Tp, typename _Cp>
58 #define _DEFINE_SPEC(_Order, _Trait, _Type, _Value) \
59 _DEFINE_SPEC_##_Order##_HELPER \
60 struct _Trait<_Type> \
61 : public integral_constant<bool, _Value> { };
66 template<
typename _Tp, _Tp __v>
69 static const _Tp value = __v;
70 typedef _Tp value_type;
80 template<
typename _Tp, _Tp __v>
88 struct __is_void_helper
90 _DEFINE_SPEC(0, __is_void_helper,
void,
true)
95 template<typename _Tp>
102 struct __is_integral_helper
104 _DEFINE_SPEC(0, __is_integral_helper,
bool,
true)
105 _DEFINE_SPEC(0, __is_integral_helper,
char, true)
106 _DEFINE_SPEC(0, __is_integral_helper,
signed char, true)
107 _DEFINE_SPEC(0, __is_integral_helper,
unsigned char, true)
108 #ifdef _GLIBCXX_USE_WCHAR_T
109 _DEFINE_SPEC(0, __is_integral_helper,
wchar_t,
true)
111 #ifdef _GLIBCXX_INCLUDE_AS_CXX0X
112 _DEFINE_SPEC(0, __is_integral_helper, char16_t,
true)
113 _DEFINE_SPEC(0, __is_integral_helper, char32_t, true)
115 _DEFINE_SPEC(0, __is_integral_helper,
short,
true)
116 _DEFINE_SPEC(0, __is_integral_helper,
unsigned short, true)
117 _DEFINE_SPEC(0, __is_integral_helper,
int, true)
118 _DEFINE_SPEC(0, __is_integral_helper,
unsigned int, true)
119 _DEFINE_SPEC(0, __is_integral_helper,
long, true)
120 _DEFINE_SPEC(0, __is_integral_helper,
unsigned long, true)
121 _DEFINE_SPEC(0, __is_integral_helper,
long long, true)
122 _DEFINE_SPEC(0, __is_integral_helper,
unsigned long long, true)
125 template<typename _Tp>
132 struct __is_floating_point_helper
134 _DEFINE_SPEC(0, __is_floating_point_helper,
float,
true)
135 _DEFINE_SPEC(0, __is_floating_point_helper,
double, true)
136 _DEFINE_SPEC(0, __is_floating_point_helper,
long double, true)
139 template<typename _Tp>
150 template<
typename _Tp, std::
size_t _Size>
154 template<
typename _Tp>
155 struct is_array<_Tp[]>
159 struct __is_pointer_helper
161 _DEFINE_SPEC(1, __is_pointer_helper, _Tp*,
true)
164 template<typename _Tp>
171 template<
typename _Tp>
175 template<
typename _Tp>
179 struct __is_member_object_pointer_helper
181 _DEFINE_SPEC(2, __is_member_object_pointer_helper, _Tp _Cp::*,
185 template<typename _Tp>
192 struct __is_member_function_pointer_helper
194 _DEFINE_SPEC(2, __is_member_function_pointer_helper, _Tp _Cp::*,
195 is_function<_Tp>::value)
198 template<typename _Tp>
205 template<
typename _Tp>
211 template<
typename _Tp>
217 template<
typename _Tp>
226 template<
typename _Res,
typename... _ArgTypes>
227 struct is_function<_Res(_ArgTypes...)>
229 template<
typename _Res,
typename... _ArgTypes>
230 struct is_function<_Res(_ArgTypes......)>
232 template<
typename _Res,
typename... _ArgTypes>
233 struct is_function<_Res(_ArgTypes...) const>
235 template<
typename _Res,
typename... _ArgTypes>
236 struct is_function<_Res(_ArgTypes......) const>
238 template<
typename _Res,
typename... _ArgTypes>
239 struct is_function<_Res(_ArgTypes...) volatile>
241 template<
typename _Res,
typename... _ArgTypes>
242 struct is_function<_Res(_ArgTypes......) volatile>
244 template<
typename _Res,
typename... _ArgTypes>
245 struct is_function<_Res(_ArgTypes...) const volatile>
247 template<
typename _Res,
typename... _ArgTypes>
248 struct is_function<_Res(_ArgTypes......) const volatile>
254 template<
typename _Tp>
257 || is_floating_point<_Tp>::value)>
261 template<
typename _Tp>
264 || is_void<_Tp>::value)>
268 template<
typename _Tp>
271 || is_reference<_Tp>::value
272 || is_void<_Tp>::value)>
276 template<
typename _Tp>
280 template<
typename _Tp>
283 || is_enum<_Tp>::value
284 || is_pointer<_Tp>::value
285 || is_member_pointer<_Tp>::value)>
289 template<
typename _Tp>
294 template<
typename _Tp>
299 template<typename _Tp>
311 template<
typename _Tp>
320 template<
typename _Tp>
325 template<
typename _Tp>
331 template<
typename _Tp>
337 template<
typename _Tp>
343 template<
typename _Tp>
349 template<
typename _Tp>
358 template<
typename _Tp, std::
size_t _Size>
359 struct rank<_Tp[_Size]>
362 template<
typename _Tp>
364 :
public integral_constant<std::size_t, 1 + rank<_Tp>::value> { };
367 template<
typename,
unsigned _U
int = 0>
371 template<
typename _Tp,
unsigned _U
int, std::
size_t _Size>
372 struct extent<_Tp[_Size], _Uint>
374 _Uint == 0 ? _Size : extent<_Tp,
378 template<
typename _Tp,
unsigned _U
int>
379 struct extent<_Tp[], _Uint>
380 :
public integral_constant<std::size_t,
381 _Uint == 0 ? 0 : extent<_Tp,
388 template<
typename,
typename>
392 template<
typename _Tp>
399 template<
typename _Tp>
401 {
typedef _Tp type; };
403 template<
typename _Tp>
405 {
typedef _Tp type; };
408 template<
typename _Tp>
410 {
typedef _Tp type; };
412 template<
typename _Tp>
414 {
typedef _Tp type; };
417 template<
typename _Tp>
421 remove_const<typename remove_volatile<_Tp>::type>::type type;
425 template<
typename _Tp>
427 {
typedef _Tp
const type; };
430 template<
typename _Tp>
432 {
typedef _Tp
volatile type; };
435 template<
typename _Tp>
445 template<
typename _Tp>
447 {
typedef _Tp type; };
449 template<
typename _Tp, std::
size_t _Size>
451 {
typedef _Tp type; };
453 template<
typename _Tp>
454 struct remove_extent<_Tp[]>
455 {
typedef _Tp type; };
458 template<
typename _Tp>
460 {
typedef _Tp type; };
462 template<
typename _Tp, std::
size_t _Size>
464 {
typedef typename remove_all_extents<_Tp>::type type; };
466 template<
typename _Tp>
467 struct remove_all_extents<_Tp[]>
468 {
typedef typename remove_all_extents<_Tp>::type type; };
472 template<
typename _Tp,
typename>
473 struct __remove_pointer_helper
474 {
typedef _Tp type; };
476 template<
typename _Tp,
typename _Up>
477 struct __remove_pointer_helper<_Tp, _Up*>
478 {
typedef _Up type; };
481 template<
typename _Tp>
483 :
public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type>
490 template<
typename _Tp>
492 {
typedef typename remove_reference<_Tp>::type* type; };
494 #undef _DEFINE_SPEC_0_HELPER
495 #undef _DEFINE_SPEC_1_HELPER
496 #undef _DEFINE_SPEC_2_HELPER
500 _GLIBCXX_END_NAMESPACE_TR1
is_member_function_pointer
integral_constant< bool, true > true_type
typedef for true_type
integral_constant< bool, false > false_type
typedef for false_type