From f39cbc5d60ff494ba238bf37062abecc21418b60 Mon Sep 17 00:00:00 2001 From: Qyriad Date: Thu, 6 Nov 2025 12:25:15 +0100 Subject: [PATCH] libutil: replace Pos operator< with <=> and constexpr == Change-Id: I60080c416b2ee2b0efce4584cf13f37c0596d73d --- lix/libutil/position.cc | 6 ------ lix/libutil/position.hh | 12 +++++++++--- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lix/libutil/position.cc b/lix/libutil/position.cc index d98cd4e93..bdce67001 100644 --- a/lix/libutil/position.cc +++ b/lix/libutil/position.cc @@ -17,12 +17,6 @@ Pos::operator std::shared_ptr() const return std::make_shared(&*this); } -bool Pos::operator<(const Pos &rhs) const -{ - return std::forward_as_tuple(line, column, origin) - < std::forward_as_tuple(rhs.line, rhs.column, rhs.origin); -} - std::optional Pos::getCodeLines() const { if (line == 0) diff --git a/lix/libutil/position.hh b/lix/libutil/position.hh index 98fd7f15b..54728fab4 100644 --- a/lix/libutil/position.hh +++ b/lix/libutil/position.hh @@ -67,9 +67,15 @@ struct Pos std::optional getCodeLines() const; - bool operator==(const Pos & rhs) const = default; - bool operator!=(const Pos & rhs) const = default; - bool operator<(const Pos & rhs) const; + // Not defaulted because it's implicitly deleted because C++ is stupid. + constexpr friend auto operator<=>(Pos const & lhs, Pos const & rhs) + { + return std::forward_as_tuple(lhs.line, lhs.column, lhs.origin) + <=> std::forward_as_tuple(rhs.line, rhs.column, rhs.origin); + } + + // operator<=> doesn't generate this because it's not defaulted. + constexpr friend bool operator==(Pos const & lhs, Pos const & rhs) = default; struct LinesIterator { using difference_type = size_t;