@@ -52,10 +52,7 @@ namespace matchit
52
52
class EvalTraits <Nullary<T>>
53
53
{
54
54
public:
55
- constexpr static decltype (auto ) evalImpl(Nullary<T> const &e)
56
- {
57
- return e ();
58
- }
55
+ constexpr static decltype (auto ) evalImpl(Nullary<T> const &e) { return e (); }
59
56
};
60
57
61
58
// Only allowed in nullary
@@ -65,7 +62,7 @@ namespace matchit
65
62
public:
66
63
constexpr static decltype (auto ) evalImpl(Id<T> const &id)
67
64
{
68
- return *const_cast <Id<T>&>(id);
65
+ return *const_cast <Id<T> &>(id);
69
66
}
70
67
};
71
68
@@ -130,11 +127,13 @@ namespace matchit
130
127
return nullary ([&] { return op eval (t); }); \
131
128
}
132
129
133
- #define BIN_OP_FOR_NULLARY (op ) \
134
- template <typename T, typename U, std::enable_if_t <isNullaryOrIdV<T> || isNullaryOrIdV<U>, bool > = true > \
135
- constexpr auto operator op (T const &t, U const &u) \
136
- { \
137
- return nullary ([&] { return eval (t) op eval (u); }); \
130
+ #define BIN_OP_FOR_NULLARY (op ) \
131
+ template <typename T, typename U, \
132
+ std::enable_if_t <isNullaryOrIdV<T> || isNullaryOrIdV<U>, bool > = \
133
+ true > \
134
+ constexpr auto operator op (T const &t, U const &u) \
135
+ { \
136
+ return nullary ([&] { return eval (t) op eval (u); }); \
138
137
}
139
138
140
139
// ADL will find these operators.
@@ -192,11 +191,15 @@ namespace matchit
192
191
return unary ([&](auto &&arg) constexpr { return op eval (t, arg); }); \
193
192
}
194
193
195
- #define BIN_OP_FOR_UNARY (op ) \
196
- template <typename T, typename U, std::enable_if_t <isUnaryOrWildcardV<T> || isUnaryOrWildcardV<U>, bool > = true > \
197
- constexpr auto operator op (T const &t, U const &u) \
198
- { \
199
- return unary ([&](auto &&arg) constexpr { return eval (t, arg) op eval (u, arg); }); \
194
+ #define BIN_OP_FOR_UNARY (op ) \
195
+ template <typename T, typename U, \
196
+ std::enable_if_t <isUnaryOrWildcardV<T> || isUnaryOrWildcardV<U>, \
197
+ bool > = true > \
198
+ constexpr auto operator op (T const &t, U const &u) \
199
+ { \
200
+ return unary ([&](auto &&arg) constexpr { \
201
+ return eval (t, arg) op eval (u, arg); \
202
+ }); \
200
203
}
201
204
202
205
UN_OP_FOR_UNARY (!)
0 commit comments