Skip to content

Commit eaf9970

Browse files
committed
Force results to reduce inheritance chains
1 parent 7d229e0 commit eaf9970

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

provides/include/lax_v1/logical.hpp

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,21 @@
77
template <class Else> struct lax_v1::if_m<Else> : force_t<Else> {};
88
template <class Cond, class Then, class... Elses>
99
struct lax_v1::if_m<Cond, Then, Elses...>
10-
: if_m<force_t<Cond>, Then, Elses...> {};
10+
: force_t<if_m<force_t<Cond>, Then, Elses...>> {};
1111
template <class Then, class... Elses>
12-
struct lax_v1::if_m<lax_v1::true_t, Then, Elses...> : Then {};
12+
struct lax_v1::if_m<lax_v1::true_t, Then, Elses...> : force_t<Then> {};
1313
template <class Then, class... Elses>
14-
struct lax_v1::if_m<lax_v1::false_t, Then, Elses...> : if_m<Elses...> {};
14+
struct lax_v1::if_m<lax_v1::false_t, Then, Elses...> : force_t<if_m<Elses...>> {
15+
};
1516

1617
template <> struct lax_v1::and_m<> : true_t {};
1718
template <class Expr, class... Exprs>
18-
struct lax_v1::and_m<Expr, Exprs...> : if_m<Expr, and_m<Exprs...>, false_t> {};
19+
struct lax_v1::and_m<Expr, Exprs...>
20+
: force_t<if_m<Expr, and_m<Exprs...>, false_t>> {};
1921

2022
template <class Expr> struct lax_v1::not_m : auto_t<!value_of_v<Expr>> {};
2123

2224
template <> struct lax_v1::or_m<> : false_t {};
2325
template <class Expr, class... Exprs>
24-
struct lax_v1::or_m<Expr, Exprs...> : if_m<Expr, true_t, or_m<Exprs...>> {};
26+
struct lax_v1::or_m<Expr, Exprs...>
27+
: force_t<if_m<Expr, true_t, or_m<Exprs...>>> {};

0 commit comments

Comments
 (0)