|
7 | 7 | template <class Else> struct lax_v1::if_m<Else> : force_t<Else> {};
|
8 | 8 | template <class Cond, class Then, class... Elses>
|
9 | 9 | 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...>> {}; |
11 | 11 | 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> {}; |
13 | 13 | 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 | +}; |
15 | 16 |
|
16 | 17 | template <> struct lax_v1::and_m<> : true_t {};
|
17 | 18 | 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>> {}; |
19 | 21 |
|
20 | 22 | template <class Expr> struct lax_v1::not_m : auto_t<!value_of_v<Expr>> {};
|
21 | 23 |
|
22 | 24 | template <> struct lax_v1::or_m<> : false_t {};
|
23 | 25 | 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