@@ -15,20 +15,12 @@ struct lax_v1::if_m<lax_v1::false_t, ThenExpr, ElseExprs...>
1515 : if_m<ElseExprs...> {};
1616
1717template <> struct lax_v1 ::and_m<> : true_t {};
18- template <class ... Exprs>
19- struct lax_v1 ::and_m<lax_v1::false_t , Exprs...> : false_t {};
20- template <class ... Exprs>
21- struct lax_v1 ::and_m<lax_v1::true_t , Exprs...> : and_m<Exprs...> {};
2218template <class Expr , class ... Exprs>
23- struct lax_v1 ::and_m<Expr, Exprs...> : and_m< force_t < Expr>, Exprs...> {};
19+ struct lax_v1 ::and_m<Expr, Exprs...> : if_m< Expr, and_m< Exprs...>, false_t > {};
2420
2521template <class Expr >
2622struct lax_v1 ::not_m : value_t <bool , !value_of_v<Expr>> {};
2723
2824template <> struct lax_v1 ::or_m<> : false_t {};
29- template <class ... Exprs>
30- struct lax_v1 ::or_m<lax_v1::true_t , Exprs...> : true_t {};
31- template <class ... Exprs>
32- struct lax_v1 ::or_m<lax_v1::false_t , Exprs...> : or_m<Exprs...> {};
3325template <class Expr , class ... Exprs>
34- struct lax_v1 ::or_m<Expr, Exprs...> : or_m< force_t < Expr>, Exprs...> {};
26+ struct lax_v1 ::or_m<Expr, Exprs...> : if_m< Expr, true_t , or_m< Exprs...> > {};
0 commit comments