13 #ifndef eli_util_traits_hpp
14 #define eli_util_traits_hpp
16 #include "eli/code_eli.hpp"
26 template<
typename T__>
33 template<
typename T__>
40 template <
typename data__>
52 template <
typename left__,
typename right__>
58 #define ELI_UTIL_PROMOTE_TRAITS_INT_HELPER(x_type) \
60 struct promote_traits<x_type, x_type> \
62 typedef x_type promote_t; \
65 struct promote_traits<x_type, char> \
67 typedef x_type promote_t; \
70 struct promote_traits<char, x_type> \
72 typedef x_type promote_t; \
75 struct promote_traits<x_type, unsigned char> \
77 typedef x_type promote_t; \
80 struct promote_traits<unsigned char, x_type> \
82 typedef x_type promote_t; \
85 struct promote_traits<x_type, short int> \
87 typedef x_type promote_t; \
90 struct promote_traits<short int, x_type> \
92 typedef x_type promote_t; \
95 struct promote_traits<x_type, unsigned short int> \
97 typedef x_type promote_t; \
100 struct promote_traits<unsigned short int, x_type> \
102 typedef x_type promote_t; \
105 struct promote_traits<x_type, int> \
107 typedef x_type promote_t; \
110 struct promote_traits<int, x_type> \
112 typedef x_type promote_t; \
115 struct promote_traits<x_type, unsigned int> \
117 typedef x_type promote_t; \
120 struct promote_traits<unsigned int, x_type> \
122 typedef x_type promote_t; \
125 struct promote_traits<x_type, long int> \
127 typedef x_type promote_t; \
130 struct promote_traits<long int, x_type> \
132 typedef x_type promote_t; \
135 struct promote_traits<x_type, unsigned long int> \
137 typedef x_type promote_t; \
140 struct promote_traits<unsigned long int, x_type> \
142 typedef x_type promote_t; \
145 #define ELI_UTIL_PROMOTE_TRAITS_HELPER(x_type) \
146 ELI_UTIL_PROMOTE_TRAITS_INT_HELPER(x_type) \
148 struct promote_traits<x_type, float> \
150 typedef x_type promote_t; \
153 struct promote_traits<float, x_type> \
155 typedef x_type promote_t; \
158 struct promote_traits<x_type, double> \
160 typedef x_type promote_t; \
163 struct promote_traits<double, x_type> \
165 typedef x_type promote_t; \
168 struct promote_traits<x_type, long double> \
170 typedef x_type promote_t; \
173 struct promote_traits<long double, x_type> \
175 typedef x_type promote_t; \
Definition: traits.hpp:41
Definition: traits.hpp:34
Definition: traits.hpp:27
data__ & expr_ref
Definition: traits.hpp:48
#define ELI_UTIL_PROMOTE_TRAITS_INT_HELPER(x_type)
Definition: traits.hpp:58
Definition: traits.hpp:36
const data__ & const_expr_ref
Definition: traits.hpp:45
Definition: traits.hpp:29