template concept bool Comparable() // function concept { return requires(Type lhs, Type rhs) { operator<(lhs, rhs); }; } template concept bool Comparable2 = // variable concept requires(Type lhs, Type rhs) { operator<(lhs, rhs); }; template // concept names can be function Type const &min(Type const &x, Type const &y) // and variable concepts { return y < x ? y : x; } template Type const &min(Type const &x, Type const &y) { return y < x ? y : x; } template requires Comparable2 // cannot be fun. con. Type const &min2(Type const &x, Type const &y) { return y < x ? y : x; }