7 #include <mpl/BasicTypes.h>
13 #include <type_traits>
22 enum{ result =
false };
28 enum{ result =
true };
29 typedef U PointeeType;
34 enum { result =
true };
35 typedef U PointeeType;
40 enum{ result =
false };
42 template <
class U,
class V>
45 enum{ result =
true };
56 enum { result =
true };
58 template <
class U,
class Arg1>
61 enum { result =
true };
63 template <
class U,
class Arg1,
class Arg2>
66 enum { result =
true };
68 template <
class U,
class Arg1,
class Arg2,
class Arg3>
71 enum { result =
true };
73 template <
class U,
class Arg1,
class Arg2,
class Arg3,
class Arg4>
76 enum { result =
true };
78 template <
class U,
class Arg1,
class Arg2,
class Arg3,
class Arg4,
class Arg5>
81 enum { result =
true };
83 template <
class U,
class Arg1,
class Arg2,
class Arg3,
class Arg4,
class Arg5,
class Arg6>
86 enum { result =
true };
88 template <
class U,
class Arg1,
class Arg2,
class Arg3,
class Arg4,
class Arg5,
class Arg6,
class Arg7>
91 enum { result =
true };
93 template <
class U,
class Arg1,
class Arg2,
class Arg3,
class Arg4,
class Arg5,
class Arg6,
class Arg7,
class Arg8>
96 enum { result =
true };
100 enum { result =
false };
101 typedef const U& ReferenceType;
105 enum { result =
true };
106 typedef U& ReferenceType;
110 enum { result =
false };
111 typedef void ReferenceType;
118 enum {isConst =
false};
124 enum {isConst =
true};
130 enum {isConst =
true};
144 enum { result =
false};
149 enum { result =
true};
155 enum { result =
false };
160 enum { result =
true };
165 enum { result =
false };
170 enum { result =
true };
175 enum { result =
false };
180 enum { result =
true };
185 enum { result =
false };
190 enum { result =
true };
195 enum { result =
false };
200 enum { result =
true };
205 enum { result =
false };
210 enum { result =
true };
215 enum { result =
false };
220 enum { result =
true };
226 enum { result =
false };
231 enum { result =
true };
272 static Big comparablecheck( ... );
273 enum { result = (
sizeof(comparablecheck(x == x)) ==
sizeof(
Big)) };
289 template <
typename U>
static Small isClass(
int U::* );
290 template <
typename U>
static Big isClass( ... );
291 enum{ result = (
sizeof( isClass<T>(0) ) ==
sizeof(
Small) )};
306 enum { isIntegral = isInt || isUInt };
307 enum { isByte = isChar || isUChar || isBool };
310 enum { isFloating = isFloat ||isDouble };
312 enum { isArith = isIntegral || isFloating };
314 enum { isFundamental = isArith ||isVoid };
321 typedef typename UnConst<T>::Result NoConst;
326 typedef typename _if< (isClass &&
sizeof(
typename std::decay<T>::type)<=
sizeof(
int))||!isClass,T,
typename ReferenceTraits<T>::ReferenceType >::Result
ParameterType;
331 typedef typename UnRef<T>::Result UnReferenced;
Common useful types used in mpl.
Definition: CommonTypes.h:11
Definition: BasicTypes.h:7
Definition: CommonTypes.h:10
Definition: TypeTraits.h:296
Small operator==(const AnyType &, const AnyType &)
Definition: Callback_Impl.h:11
Definition: CommonTypes.h:13
Definition: TypeTraits.h:174
Definition: TypeTraits.h:184
Definition: TypeTraits.h:288
Definition: TypeTraits.h:269
Definition: TypeTraits.h:214
Definition: TypeTraits.h:204
Definition: TypeTraits.h:50
Definition: TypeTraits.h:154
Definition: TypeTraits.h:143
Definition: TypeTraits.h:39
Definition: TypeTraits.h:21
Definition: TypeTraits.h:99
Definition: TypeTraits.h:194
Definition: TypeTraits.h:164
Definition: TypeTraits.h:116
Definition: TypeTraits.h:134
Definition: TypeTraits.h:225
Definition: TypeTraits.h:236