#include <concepts>
#include <functional>
// Must be different for equivalence_relation
template<typename...>
concept always_true = true;
template<typename T, typename A, typename B>
concept strict_weak_order_semantic_requirement =
always_true<T, A, B>;
template<typename T, typename A, typename B>
concept strict_weak_order = std::relation<T, A, B>
&& strict_weak_order_semantic_requirement<T, A, B>;
bool foo(strict_weak_order<int, int> auto x) { return true; }
bool foo(std::relation<int, int> auto x) { return false; }
int main() {
foo(std::less{});
}