26 #ifndef MLN_CORE_CATEGORY_HH
27 # define MLN_CORE_CATEGORY_HH
33 # include <mln/metal/equal.hh>
50 typedef Unknown<void> super;
64 typedef typename T::category ret;
68 struct category< const T >
70 typedef typename category<T>::ret 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 >
115 struct super_category_
117 typedef typename helper_super_category_< Category, T >::ret ret;
126 #endif // ! MLN_CORE_CATEGORY_HH