\
template <
typename L,
typename R, \
typename std::enable_if<Is##CLASS##Op<L, R>::value>
::type* = \
nullptr> \
constexpr CLASS##Numeric< \
typename MathWrapper<CLASS##OP_NAME##Op, L, R>::type> \
operator OP(
const L lhs,
const R rhs) { \
return decltype(lhs OP rhs)::template MathOp<CLASS##OP_NAME##Op>(lhs, \
rhs); \
} \
\
template <typename L> \
template <typename R> \
constexpr CLASS##Numeric<L>& CLASS##Numeric<L>::operator CMP_OP( \
return MathOp<CLASS##OP_NAME##Op>(rhs); \
} \
\
BASE_NUMERIC_ARITHMETIC_VARIADIC(CLASS, CL_ABBR, OP_NAME)
223 { \
224 return decltype(lhs
OP rhs)::template MathOp<CLASS##OP_NAME##Op>(lhs, \
225 rhs); \
226 } \
227 \
228 template <typename L> \
229 template <typename R> \
230 constexpr CLASS##Numeric<L>& CLASS##Numeric<L>::operator CMP_OP( \
232 return MathOp<CLASS##OP_NAME##Op>(rhs); \
233 } \
234 \
235 BASE_NUMERIC_ARITHMETIC_VARIADIC(CLASS, CL_ABBR, OP_NAME)