26 #ifndef MLN_METAL_BEXPR_HH
27 # define MLN_METAL_BEXPR_HH
34 # include <mln/metal/bool.hh>
37 # define mlc_not( B ) mln::metal::not_< B >
38 # define mlc_and( B1, B2 ) mln::metal::and_< B1, B2 >
39 # define mlc_or( B1, B2 ) mln::metal::or_ < B1, B2 >
40 # define mlc_xor( B1, B2 ) mln::metal::xor_< B1, B2 >
51 struct not_ : bool_<( ! B::value )>
56 template <
typename L,
typename R>
57 struct and_ : bool_<( L::value && R::value )>
62 template <
typename L,
typename R>
63 struct or_ : bool_<( L::value || R::value )>
68 template <
typename L,
typename R>
69 struct xor_ : bool_<( L::value ^ R::value )>
78 #endif // ! MLN_METAL_BEXPR_HH