20 #ifndef __utl_meta_operations_h__ 21 #define __utl_meta_operations_h__ 46 template<
typename _Tp>
52 template<
typename...>
struct _or_;
57 template<
typename _T1>
60 template<
typename _T1,
typename _T2>
64 template<
typename _T1,
typename _T2,
typename _T3,
typename... _Tn>
65 struct _or_<_T1, _T2, _T3, _Tn...>
66 :
if_<_T1, _T1, _or_<_T2, _T3, _Tn...>> { };
69 template <
typename... _Ts>
76 template<
typename...>
struct _and_;
82 template<
typename _T1>
86 template<
typename _T1,
typename _T2>
90 template<
typename _T1,
typename _T2,
typename _T3,
typename... _Tn>
91 struct _and_<_T1, _T2, _T3, _Tn...>
92 :
if_<_T1, _and_<_T2, _T3, _Tn...>, _T1> { };
95 template <
typename... _Ts>
101 template<
typename _T1,
typename _T2>
104 template<
typename _Tp>
110 template<
typename _T1,
typename _T2>
137 template <
typename _Tp>
140 template <
typename _Tp1,
typename _Tp2>
142 decltype(_Tp1() + _Tp2()),
146 template <
typename _Tp1,
typename _Tp2>
148 decltype(_Tp2() * _Tp2()),
152 template <
typename _Tp1,
typename _Tp2>
154 decltype(_Tp2() / _Tp2()),
158 template <
typename _Tp1,
typename _Tp2>
160 decltype(_Tp1() % _Tp2()),
164 template <
typename _Tp1,
typename _Tp2>
168 template <
typename _Tp>
172 template <
typename _Tp>
207 template <
typename _Tp1,
typename _Tp2>
210 template <
typename _Tp1,
typename _Tp2>
214 template <
typename _Tp1,
typename _Tp2>
217 template <
typename _Tp,
typename shift>
220 template <
typename _Tp,
typename shift>
if_c< If::type::value, Args... > if_
Select one type or another depending on a compile-time Boolean type.
Template meta-programming type selections.
bool_<!B > not_c
Negate the bool constant parameter.
STL's core language concepts.
not_< eval< same_< _T1, _T2 > >> not_same_
eval< detail::_or_< _Ts... > > or_
not_c< _Tp::type::value > not_
not
eval< detail::_and_< _Ts... > > and_
Implementation detail main forward header.