26 #ifndef MLN_CORE_CATEGORY_HH
27 # define MLN_CORE_CATEGORY_HH
33 # include <mln/metal/equal.hh>
64 typedef typename T::category
ret;
84 template <
template <
class>
class Category,
typename S,
typename T >
85 struct helper_super_category_solve_
87 private metal::equal< typename Category<void>::super, void* >::check_t
93 template <
template <
class>
class Category,
typename T >
94 struct helper_super_category_solve_< Category, void,
T >
96 typedef typename Category<void>::super
ret;
99 template <
typename Category,
typename T >
100 struct helper_super_category_;
102 template <
template <
class>
class Category,
typename S,
typename T >
103 struct helper_super_category_< Category<S>,
T > : helper_super_category_solve_< Category, S, T >
110 template <
template <
class>
class Category,
typename T >
111 struct helper_super_category_< Category<void*>,
T >;
114 template <
typename Category,
typename T >
117 typedef typename helper_super_category_< Category, T >::ret
ret;
126 #endif // ! MLN_CORE_CATEGORY_HH