13 #ifndef STXXL_HEADER__COMPAT_TYPE_TRAITS_H_
14 #define STXXL_HEADER__COMPAT_TYPE_TRAITS_H_
16 #if defined(__GXX_EXPERIMENTAL_CXX0X__)
17 #include <type_traits>
18 #elif defined(__GNUG__) && (__GNUC__ >= 4)
19 #include <tr1/type_traits>
20 #elif defined(STXXL_BOOST_CONFIG)
21 #include <boost/type_traits/remove_const.hpp>
24 #include <stxxl/bits/namespace.h>
27 __STXXL_BEGIN_NAMESPACE
31 #if defined(__GXX_EXPERIMENTAL_CXX0X__)
32 using std::remove_const;
33 #elif defined(__GNUG__) && (__GNUC__ >= 4)
34 using std::tr1::remove_const;
35 #elif defined(STXXL_BOOST_CONFIG)
36 using boost::remove_const;
38 template <
typename _Tp>
44 template <
typename _Tp>
45 struct remove_const<_Tp const>
51 #if defined(__GNUG__) && ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100) < 40300)
55 template <
typename _Tp>
62 struct __make_signed<char>
64 typedef signed char __type;
68 struct __make_signed<unsigned char>
70 typedef signed char __type;
74 struct __make_signed<unsigned short>
76 typedef signed short __type;
80 struct __make_signed<unsigned int>
82 typedef signed int __type;
86 struct __make_signed<unsigned long>
88 typedef signed long __type;
92 struct __make_signed<unsigned long long>
94 typedef signed long long __type;
98 template <
typename _Tp>
101 typedef typename __make_signed<_Tp>::__type type;
106 __STXXL_END_NAMESPACE
108 #endif // !STXXL_HEADER__COMPAT_TYPE_TRAITS_H_