45 template <
typename T1,
typename T2 >
53 template <
typename T >
61 #define CREATEPROMOTION( T1, T2, ResultType ) \
63 class TypePromotion< T1, T2 > \
66 typedef ResultType Result; \
70 class TypePromotion< T2, T1 > \
73 typedef ResultType Result; \
83 CREATEPROMOTION(
long double,
double,
long double )
84 CREATEPROMOTION(
long double,
float,
long double )
85 CREATEPROMOTION(
long double, int64_t,
long double )
86 CREATEPROMOTION(
long double, int32_t,
long double )
87 CREATEPROMOTION(
long double, int16_t,
long double )
88 CREATEPROMOTION(
long double, int8_t,
long double )
89 CREATEPROMOTION(
long double, uint64_t,
long double )
90 CREATEPROMOTION(
long double, uint32_t,
long double )
91 CREATEPROMOTION(
long double, uint16_t,
long double )
92 CREATEPROMOTION(
long double, uint8_t,
long double )
95 CREATEPROMOTION(
double,
float,
double )
96 CREATEPROMOTION(
double, int64_t,
double )
97 CREATEPROMOTION(
double, int32_t,
double )
98 CREATEPROMOTION(
double, int16_t,
double )
99 CREATEPROMOTION(
double, int8_t,
double )
100 CREATEPROMOTION(
double, uint64_t,
double )
101 CREATEPROMOTION(
double, uint32_t,
double )
102 CREATEPROMOTION(
double, uint16_t,
double )
103 CREATEPROMOTION(
double, uint8_t,
double )
106 CREATEPROMOTION(
float, int64_t,
float )
107 CREATEPROMOTION(
float, int32_t,
float )
108 CREATEPROMOTION(
float, int16_t,
float )
109 CREATEPROMOTION(
float, int8_t,
float )
110 CREATEPROMOTION(
float, uint64_t,
float )
111 CREATEPROMOTION(
float, uint32_t,
float )
112 CREATEPROMOTION(
float, uint16_t,
float )
113 CREATEPROMOTION(
float, uint8_t,
float )
116 CREATEPROMOTION( int64_t, int32_t, int64_t )
117 CREATEPROMOTION( int64_t, int16_t, int64_t )
118 CREATEPROMOTION( int64_t, int8_t, int64_t )
119 CREATEPROMOTION( int64_t, uint64_t,
double )
120 CREATEPROMOTION( int64_t, uint32_t, int64_t )
121 CREATEPROMOTION( int64_t, uint16_t, int64_t )
122 CREATEPROMOTION( int64_t, uint8_t, int64_t )
125 CREATEPROMOTION( int32_t, int16_t, int32_t )
126 CREATEPROMOTION( int32_t, int8_t, int32_t )
127 CREATEPROMOTION( int32_t, uint64_t,
double )
128 CREATEPROMOTION( int32_t, uint32_t, int64_t )
129 CREATEPROMOTION( int32_t, uint16_t, int32_t )
130 CREATEPROMOTION( int32_t, uint8_t, int32_t )
133 CREATEPROMOTION( int16_t, int8_t, int16_t )
134 CREATEPROMOTION( int16_t, uint64_t,
double )
135 CREATEPROMOTION( int16_t, uint32_t, int64_t )
136 CREATEPROMOTION( int16_t, uint16_t, int32_t )
137 CREATEPROMOTION( int16_t, uint8_t, int16_t )
140 CREATEPROMOTION( int8_t, uint64_t,
double )
141 CREATEPROMOTION( int8_t, uint32_t, int64_t )
142 CREATEPROMOTION( int8_t, uint16_t, int32_t )
143 CREATEPROMOTION( int8_t, uint8_t, int16_t )
146 CREATEPROMOTION( uint64_t, uint32_t, uint64_t )
147 CREATEPROMOTION( uint64_t, uint16_t, uint64_t )
148 CREATEPROMOTION( uint64_t, uint8_t, uint64_t )
151 CREATEPROMOTION( uint32_t, uint16_t, uint32_t )
152 CREATEPROMOTION( uint32_t, uint8_t, uint32_t )
155 CREATEPROMOTION( uint16_t, uint8_t, uint16_t )
All kinds of type traits and policies like type priorities and type combinations.