Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / sdk / include / c++ / stlport / type_traits
diff --git a/reactos/sdk/include/c++/stlport/type_traits b/reactos/sdk/include/c++/stlport/type_traits
deleted file mode 100644 (file)
index 27b61ab..0000000
+++ /dev/null
@@ -1,798 +0,0 @@
-// -*- C++ -*- Time-stamp: <08/07/20 19:10:15 ptr>\r
-\r
-/*\r
- * Copyright (c) 2007, 2008\r
- * Petr Ovtchenkov\r
- *\r
- * Licensed under the Academic Free License version 3.0\r
- *\r
- * Derived from original <misc/type_traits.h> of 'complement' project\r
- * [http://complement.sourceforge.net]\r
- * to make it close to JTC1/SC22/WG21 C++ 0x working draft\r
- * [http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2008/n2521.pdf]\r
- */\r
-\r
-#ifndef __STLP_TYPE_TRAITS\r
-#define __STLP_TYPE_TRAITS\r
-\r
-#ifndef _STLP_OUTERMOST_HEADER_ID\r
-#  define _STLP_OUTERMOST_HEADER_ID 0x3\r
-#  include <stl/_prolog.h>\r
-#endif\r
-\r
-// libstdc++ v3, timestamp 20050519 (3.4.4) has __type_traits,\r
-// libstdc++ v3, timestamp 20060306 (3.4.6) has __type_traits,\r
-// while libstdc++ v3, 20050921 (4.0.2) not; use libstdc++ instead\r
-// # if defined(STLPORT) || (defined(__GNUC__) && (__GNUC__ < 4)) /* !defined(__GLIBCXX__) || (defined(__GNUC__) && (__GNUC__ < 4)) */\r
-\r
-_STLP_BEGIN_NAMESPACE\r
-\r
-_STLP_BEGIN_TR1_NAMESPACE\r
-\r
-namespace detail {\r
-\r
-struct __select_types\r
-{\r
-    typedef char __t1;\r
-    struct __t2\r
-    {\r
-        char __two[2];\r
-    };\r
-};\r
-\r
-template <class _Tp>\r
-struct __instance :\r
-    public __select_types\r
-{\r
-  private:\r
-    template <class _Up>\r
-    static __t1 __test(_Up(*)[1]);\r
-\r
-    template <class>\r
-    static __t2 __test(...);\r
-    \r
-  public:\r
-#ifdef _STLP_STATIC_CONST_INIT_BUG\r
-    static const bool __value;\r
-#else\r
-    static const bool __value = sizeof(__test<_Tp>(0)) == sizeof(__select_types::__t1);\r
-#endif\r
-\r
-};\r
-\r
-#ifdef _STLP_STATIC_CONST_INIT_BUG\r
-template <class _Tp>\r
-const bool __instance<_Tp>::__value = sizeof(__instance<_Tp>::__test<_Tp>(0)) == sizeof(__select_types::__t1);\r
-#endif\r
-\r
-template <class T>\r
-struct __uoc_aux : // union or class\r
-    public __select_types\r
-{\r
-  private:\r
-    template <class _Up>\r
-    static __t1 __test( int _Up::* );\r
-\r
-    template <class>\r
-    static __t2 __test(...);\r
-    \r
-  public:\r
-#ifdef __FIT_NO_INLINE_TEMPLATE_STATIC_INITIALISATION\r
-    static const bool __value;\r
-#else\r
-    static const bool __value = sizeof(__test<T>(0)) == sizeof(__select_types::__t1);\r
-#endif\r
-};\r
-\r
-#ifdef __FIT_NO_INLINE_TEMPLATE_STATIC_INITIALISATION\r
-template <class T>\r
-const bool __uoc_aux<T>::__value = sizeof(__uoc_aux<T>::__test<T>(0)) == sizeof(__select_types::__t1);\r
-#endif\r
-\r
-template <class T>\r
-class __empty\r
-{ };\r
-\r
-template <class T, bool B>\r
-class __inheritance_aux\r
-{};\r
-\r
-template <class T>\r
-class __inheritance_aux<T,true> :\r
-    public T\r
-{\r
-  public:\r
-    virtual ~__inheritance_aux()\r
-      { }\r
-};\r
-\r
-#if 0\r
-template <class T, bool B>\r
-struct __virtual_aux\r
-{\r
-  public:\r
-#ifdef _STLP_STATIC_CONST_INIT_BUG\r
-    static const bool __value;\r
-#else\r
-    static const bool __value = B ? (sizeof(__inheritance_aux<T,B>) == sizeof(T)) : false;\r
-#endif\r
-};\r
-\r
-#ifdef _STLP_STATIC_CONST_INIT_BUG\r
-template <class T, bool B>\r
-const bool __virtual_aux<T,B>::__value = B ? (sizeof(__inheritance_aux<T,B>) == sizeof(T)) : false;\r
-#endif\r
-#endif\r
-\r
-} // namespace detail\r
-\r
-template <class _Tp, _Tp __v>\r
-struct integral_constant\r
-{\r
-    static const _Tp                    value = __v;\r
-    // enum { value = __v }; ?\r
-\r
-    typedef _Tp                         value_type;\r
-    typedef integral_constant<_Tp, __v> type;\r
-};\r
-\r
-typedef integral_constant<bool, true>   true_type;\r
-typedef integral_constant<bool, false>  false_type;\r
-\r
-namespace detail {\r
-\r
-template <typename _Tp>\r
-struct __is_union_or_class :\r
-    public integral_constant<bool, __uoc_aux<_Tp>::__value>\r
-{ };\r
-\r
-#if 0\r
-template<typename _Tp>\r
-struct __is_vtbl : // has virtual table?\r
-    public integral_constant<bool, __virtual_aux<_Tp,__is_union_or_class<_Tp>::value >::__value>\r
-{ };\r
-#endif\r
-\r
-template <typename _Tp>\r
-struct __is_vtbl : // has virtual table?\r
-    public integral_constant<bool, __is_union_or_class<_Tp>::value ? (sizeof(__inheritance_aux<_Tp,__is_union_or_class<_Tp>::value>) == sizeof(_Tp)) : false >\r
-{ };\r
-\r
-} // namespace detail\r
-\r
-#define  __SPEC_(C,T,B)               \\r
-template <>                           \\r
-struct C<T> :                         \\r
-    public integral_constant<bool, B> \\r
-{ }\r
-\r
-#define __CV_SPEC(C,T,B) \\r
-__SPEC_(C,T,B);            \\r
-__SPEC_(C,const T,B);      \\r
-__SPEC_(C,volatile T,B);   \\r
-__SPEC_(C,const volatile T,B)\r
-\r
-#define  __SPEC_1(C,T,B)              \\r
-template <class _Tp>                  \\r
-struct C<T> :                         \\r
-    public integral_constant<bool, B> \\r
-{ }\r
-\r
-#define __CV_SPEC_1(C,T,B) \\r
-__SPEC_1(C,T,B);            \\r
-__SPEC_1(C,T const,B);      \\r
-__SPEC_1(C,T volatile,B);   \\r
-__SPEC_1(C,T const volatile,B)\r
-\r
-#define  __SPEC_2(C,T,B)              \\r
-template <class _Tp1, class _Tp2>     \\r
-struct C<T> :                         \\r
-    public integral_constant<bool, B> \\r
-{ }\r
-\r
-#define __CV_SPEC_2(C,T,B) \\r
-__SPEC_2(C,T,B);            \\r
-__SPEC_2(C,T const,B);      \\r
-__SPEC_2(C,T volatile,B);   \\r
-__SPEC_2(C,T const volatile,B)\r
-\r
-// [4.5.1] primary type categories:\r
-\r
-template <class _Tp>\r
-struct is_void :\r
-    public false_type\r
-{ };\r
-\r
-template <>\r
-struct is_void<void> :\r
-    public true_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_integral :\r
-    public false_type\r
-{ };\r
-\r
-__CV_SPEC(is_integral,bool,true);\r
-__CV_SPEC(is_integral,char,true);\r
-__CV_SPEC(is_integral,signed char,true);\r
-__CV_SPEC(is_integral,unsigned char,true);\r
-__CV_SPEC(is_integral,wchar_t,true);\r
-__CV_SPEC(is_integral,short,true);\r
-__CV_SPEC(is_integral,unsigned short,true);\r
-__CV_SPEC(is_integral,int,true);\r
-__CV_SPEC(is_integral,unsigned int,true);\r
-__CV_SPEC(is_integral,long,true);\r
-__CV_SPEC(is_integral,unsigned long,true);\r
-__CV_SPEC(is_integral,long long,true);\r
-__CV_SPEC(is_integral,unsigned long long,true);\r
-\r
-template <class _Tp>\r
-struct is_floating_point :\r
-    public false_type\r
-{ };\r
-\r
-__CV_SPEC(is_floating_point,float,true);\r
-__CV_SPEC(is_floating_point,double,true);\r
-__CV_SPEC(is_floating_point,long double,true);\r
-\r
-template <class _Tp>\r
-struct is_array :\r
-    public false_type\r
-{ };\r
-\r
-template <class _Tp, std::size_t _Sz>\r
-struct is_array<_Tp[_Sz]> :\r
-    public true_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_array<_Tp[]> :\r
-    public true_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_pointer :\r
-    public false_type\r
-{ };\r
-\r
-__CV_SPEC_1(is_pointer,_Tp *,true);\r
-\r
-template <class _Tp>\r
-struct is_lvalue_reference :\r
-    public false_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_lvalue_reference<_Tp&> :\r
-    public true_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_rvalue_reference :\r
-    public false_type\r
-{ };\r
-\r
-// template <class _Tp>\r
-// struct is_rvalue_reference<_Tp&&> :\r
-//     public true_type\r
-// { };\r
-\r
-template <class _Tp>\r
-struct is_reference :\r
-    public false_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_reference<_Tp&> :\r
-    public true_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_function :\r
-    public integral_constant<bool, !(detail::__instance<_Tp>::__value\r
-                                     || detail::__is_union_or_class<_Tp>::value\r
-                                     || is_reference<_Tp>::value\r
-                                     || is_void<_Tp>::value)>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_member_object_pointer :\r
-    public false_type\r
-{ };\r
-\r
-// _SPEC_FULL2(is_member_object_pointer, _Tp1 _Tp2::*,!is_function<_Tp1>::value);\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_object_pointer<_Tp1 _Tp2::*> :\r
-    public integral_constant<bool, !is_function<_Tp1>::value>\r
-{ };\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_object_pointer<_Tp1 _Tp2::* const> :\r
-    public integral_constant<bool, !is_function<_Tp1>::value>\r
-{ };\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_object_pointer<_Tp1 _Tp2::* volatile> :\r
-    public integral_constant<bool, !is_function<_Tp1>::value>\r
-{ };\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_object_pointer<_Tp1 _Tp2::* const volatile> :\r
-    public integral_constant<bool, !is_function<_Tp1>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_member_function_pointer :\r
-    public false_type\r
-{ };\r
-\r
-// _SPEC_FULL2(is_member_function_pointer,_Tp1 _Tp2::*,is_function<_Tp1>::value);\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_function_pointer<_Tp1 _Tp2::*> :                         \r
-    public integral_constant<bool, is_function<_Tp1>::value> \r
-{ };\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_function_pointer<_Tp1 _Tp2::* const> :\r
-    public integral_constant<bool, is_function<_Tp1>::value>\r
-{ };\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_function_pointer<_Tp1 _Tp2::* volatile> :\r
-    public integral_constant<bool, is_function<_Tp1>::value>\r
-{ };\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_member_function_pointer<_Tp1 _Tp2::* const volatile> :\r
-    public integral_constant<bool, is_function<_Tp1>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_member_pointer :\r
-    public integral_constant<bool, (is_member_object_pointer<_Tp>::value || is_member_function_pointer<_Tp>::value)>\r
-{ };\r
-\r
-// 4.5.2 composite type categories\r
-\r
-template <class _Tp>\r
-struct is_arithmetic :\r
-    public integral_constant<bool, (is_integral<_Tp>::value || is_floating_point<_Tp>::value)>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_fundamental :\r
-    public integral_constant<bool, (is_arithmetic<_Tp>::value || is_void<_Tp>::value)>\r
-{ };\r
-\r
-// [4.5.1] primary type categories (continued):\r
-\r
-template <class _Tp>\r
-struct is_enum :\r
-    public integral_constant<bool, !(is_fundamental<_Tp>::value\r
-                                     || is_array<_Tp>::value\r
-                                     || is_pointer<_Tp>::value\r
-                                     || is_reference<_Tp>::value\r
-                                     || is_member_pointer<_Tp>::value\r
-                                     || is_function<_Tp>::value\r
-                                     || detail::__is_union_or_class<_Tp>::value) >\r
-{ };\r
-\r
-template <class T>\r
-struct is_union\r
-{ };\r
-\r
-template <class T>\r
-struct is_class\r
-{ };\r
-\r
-// is_function (above)\r
-\r
-// 4.5.2 composite type categories (continued)\r
-\r
-// is_arithmetic (above)\r
-// is_fundamental (above)\r
-\r
-template <class _Tp>\r
-struct is_object :\r
-    public integral_constant<bool, (is_arithmetic<_Tp>::value ||\r
-                                    is_array<_Tp>::value ||\r
-                                    is_pointer<_Tp>::value ||\r
-                                    is_member_pointer<_Tp>::value ||\r
-                                    detail::__is_union_or_class<_Tp>::value)>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_scalar :\r
-    public integral_constant<bool, (is_arithmetic<_Tp>::value\r
-                                    || is_enum<_Tp>::value\r
-                                    || is_pointer<_Tp>::value\r
-                                    || is_member_pointer<_Tp>::value)>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_compound :\r
-    public integral_constant<bool, !is_fundamental<_Tp>::value>\r
-{ };\r
-\r
-// is_member_pointer\r
-\r
-// 4.5.3 type properties:\r
-\r
-template <class _Tp>\r
-struct is_const :\r
-    public false_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_const<_Tp const> :\r
-    public true_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_volatile :\r
-    public false_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_volatile<_Tp volatile> :\r
-    public true_type\r
-{ };\r
-\r
-\r
-// 4.7.3 array modifications:\r
-\r
-template <class _Tp>\r
-struct remove_extent\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp, std::size_t _Sz>\r
-struct remove_extent<_Tp[_Sz]>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_extent<_Tp[]>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_all_extents\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp, std::size_t _Size>\r
-struct remove_all_extents<_Tp[_Size]>\r
-{\r
-    typedef typename remove_all_extents<_Tp>::type type;\r
-};\r
-\r
-template<typename _Tp>\r
-struct remove_all_extents<_Tp[]>\r
-{\r
-    typedef typename remove_all_extents<_Tp>::type type;\r
-};\r
-\r
-// 4.5.3 type properties (continued):\r
-\r
-template <class _Tp>\r
-struct is_trivial :\r
-    public integral_constant<bool, (is_void<_Tp>::value\r
-                                    || is_scalar<typename remove_all_extents<_Tp>::type>::value)>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_standard_layout :\r
-    public integral_constant<bool, (is_void<_Tp>::value\r
-                                    || is_scalar<typename remove_all_extents<_Tp>::type>::value)>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_pod :\r
-    public integral_constant<bool, (is_void<_Tp>::value\r
-                                    || is_scalar<typename remove_all_extents<_Tp>::type>::value)>\r
-{ };\r
-\r
-template<typename _Tp>\r
-struct is_empty\r
-    : public integral_constant<bool, (detail::__is_union_or_class<_Tp>::value\r
-                                      && (sizeof(detail::__empty<_Tp>) == sizeof(_Tp)))>\r
-{ };\r
-\r
-// is_polimorphic\r
-// is_abstract\r
-\r
-template <class _Tp>\r
-struct has_trivial_constructor :\r
-    public integral_constant<bool, is_pod<_Tp>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct has_trivial_copy :\r
-    public integral_constant<bool, is_pod<_Tp>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct has_trivial_assign :\r
-    public integral_constant<bool, is_pod<_Tp>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct has_trivial_destructor :\r
-    public integral_constant<bool, is_pod<_Tp>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct has_nothrow_constructor :\r
-    public integral_constant<bool, is_pod<_Tp>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct has_nothrow_copy :\r
-    public integral_constant<bool, is_pod<_Tp>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct has_nothrow_assign :\r
-    public integral_constant<bool, is_pod<_Tp>::value>\r
-{ };\r
-\r
-template <class _Tp>\r
-struct has_virtual_destructor :\r
-    public false_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_signed :\r
-    public false_type\r
-{ };\r
-\r
-__CV_SPEC(is_signed,signed char,true);\r
-__CV_SPEC(is_signed,short,true);\r
-__CV_SPEC(is_signed,int,true);\r
-__CV_SPEC(is_signed,long,true);\r
-__CV_SPEC(is_signed,long long,true);\r
-\r
-template <class _Tp>\r
-struct is_unsigned :\r
-    public false_type\r
-{ };\r
-\r
-__CV_SPEC(is_unsigned,unsigned char,true);\r
-__CV_SPEC(is_unsigned,unsigned short,true);\r
-__CV_SPEC(is_unsigned,unsigned int,true);\r
-__CV_SPEC(is_unsigned,unsigned long,true);\r
-__CV_SPEC(is_unsigned,unsigned long long,true);\r
-\r
-// alignment_of\r
-// rank\r
-// extent\r
-\r
-// 4.6 type relations:\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct is_same :\r
-    public false_type\r
-{ };\r
-\r
-template <class _Tp>\r
-struct is_same<_Tp, _Tp> :\r
-    public true_type\r
-{ };\r
-\r
-// is_base_of\r
-// is_convertible\r
-\r
-// 4.7.1 const-volatile modifications\r
-\r
-template <class _Tp>\r
-struct remove_const\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_const<_Tp const>\r
-{\r
-    typedef _Tp type;\r
-};\r
-  \r
-template <class _Tp>\r
-struct remove_volatile\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_volatile<_Tp volatile>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_cv\r
-{\r
-    typedef typename remove_const<typename remove_volatile<_Tp>::type>::type type;\r
-};\r
-  \r
-template <class _Tp>\r
-struct add_const\r
-{\r
-    typedef _Tp const type;\r
-};\r
-   \r
-template <class _Tp>\r
-struct add_volatile\r
-{\r
-    typedef _Tp volatile type;\r
-};\r
-  \r
-template <class _Tp>\r
-struct add_cv\r
-{\r
-    typedef typename add_const<typename add_volatile<_Tp>::type>::type type;\r
-};\r
-\r
-// 4.7.2 reference modifications:\r
-\r
-template <class _Tp>\r
-struct remove_reference\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_reference<_Tp&>\r
-{\r
-    typedef _Tp type;\r
-};\r
-  \r
-template <class _Tp>\r
-struct add_reference\r
-{\r
-    typedef _Tp& type;\r
-};\r
-\r
-template <class _Tp>\r
-struct add_reference<_Tp&>\r
-{\r
-    typedef _Tp& type;\r
-};\r
-\r
-// 4.7.3 array modifications (see above)\r
-\r
-// 4.7.4 pointer modifications:\r
-\r
-template <class _Tp>\r
-struct remove_pointer\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_pointer<_Tp *>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_pointer<_Tp * const>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_pointer<_Tp * volatile>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct remove_pointer<_Tp * const volatile>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <class _Tp>\r
-struct add_pointer\r
-{\r
-    typedef typename remove_reference<_Tp>::type * type;\r
-};\r
-\r
-// 20.5.7 other transformations:\r
-\r
-// template <std::size_t Len, std::size_t Align> struct aligned_storage;\r
-// template <std::size_t Len, class... Types> struct aligned_union;\r
-\r
-namespace detail {\r
-\r
-template <bool,class _U>\r
-struct _decay_aux2\r
-{\r
-    typedef typename remove_cv<_U>::type type;\r
-};\r
-\r
-template <class _U>\r
-struct _decay_aux2<true,_U>\r
-{\r
-    typedef typename add_pointer<_U>::type type;\r
-};\r
-\r
-template <bool, class _U>\r
-struct _decay_aux1\r
-{\r
-    typedef typename _decay_aux2<is_function<_U>::value,_U>::type type; \r
-};\r
-\r
-template <class _U>\r
-struct _decay_aux1<true,_U>\r
-{\r
-    typedef typename remove_extent<_U>::type* type;\r
-};\r
-\r
-} // namespace detail\r
-\r
-template <class _Tp>\r
-class decay\r
-{\r
-  private:\r
-    typedef typename remove_reference<_Tp>::type _U;\r
-\r
-  public:\r
-    typedef typename detail::_decay_aux1<is_array<_U>::value,_U>::type type;\r
-};\r
-\r
-template <bool, class _Tp = void>\r
-struct enable_if\r
-{\r
-};\r
-\r
-template <class _Tp>\r
-struct enable_if<true,_Tp>\r
-{\r
-    typedef _Tp type;\r
-};\r
-\r
-template <bool, class _Tp1, class _Tp2>\r
-struct conditional\r
-{\r
-    typedef _Tp2 type;\r
-};\r
-\r
-template <class _Tp1, class _Tp2>\r
-struct conditional<true,_Tp1,_Tp2>\r
-{\r
-    typedef _Tp1 type;\r
-};\r
-\r
-// template <class... _Tp> struct common_type;\r
-\r
-#undef __CV_SPEC\r
-#undef __SPEC_\r
-#undef __CV_SPEC_1\r
-#undef __SPEC_1\r
-#undef __CV_SPEC_2\r
-#undef __SPEC_2\r
-\r
-_STLP_END_NAMESPACE // tr1\r
-\r
-_STLP_END_NAMESPACE\r
-\r
-// # else // __GLIBCXX__ && (__GNUC__ >= 4) && !STLPORT\r
-// #  include <tr1/type_traits>\r
-// # endif\r
-\r
-#if (_STLP_OUTERMOST_HEADER_ID == 0x3)\r
-#  include <stl/_epilog.h>\r
-#  undef _STLP_OUTERMOST_HEADER_ID\r
-#endif\r
-\r
-#endif // __STLP_TYPE_TRAITS\r
-\r