4CVWQ5M3SLVLFHBDDQUWITF465YOUI7VYG7W6VWDOOXTHNZCXITAC
template <typename _Test, auto _L, auto _R>
struct Constraint;
template <
typename _Test,
typename _L, typename _LF, _LF(_L::*_l),
typename _R, typename _RF, _RF(_R::*_r)>
struct Constraint<_Test, _l, _r> {
static
bool test(_L const &l, _R const &r) {
return _Test::test(l.*_l, r.*_r);
}
};
struct Less {
template <typename _L, typename _R>
static
bool test(_L const &l, _R const &r) {
return l < r;
template <typename _L, typename _R>
struct Equal {
using L = typename _L::Operand;
using R = typename _R::Operand;
static constexpr
bool test(L const &l, R const &r) {
return _L::get(l) == _R::get(r);