AK/Complex: C++20-compatible comparison operators

Problem:
- Clang correctly reports non-`const` member function comparison
  operators as ambiguous.

Solution:
- Make them `const`.
This commit is contained in:
Lenny Maiorani 2021-04-18 10:52:11 -06:00 committed by Andreas Kling
parent 97f4aa166a
commit 0ac02b9084
2 changed files with 9 additions and 2 deletions

View file

@ -243,13 +243,13 @@ public:
} }
template<AK::Concepts::Arithmetic U> template<AK::Concepts::Arithmetic U>
constexpr bool operator==(const Complex<U>& a) constexpr bool operator==(const Complex<U>& a) const
{ {
return (this->real() == a.real()) && (this->imag() == a.imag()); return (this->real() == a.real()) && (this->imag() == a.imag());
} }
template<AK::Concepts::Arithmetic U> template<AK::Concepts::Arithmetic U>
constexpr bool operator!=(const Complex<U>& a) constexpr bool operator!=(const Complex<U>& a) const
{ {
return !(*this == a); return !(*this == a);
} }

View file

@ -119,7 +119,14 @@ TEST_CASE(assign_moved_self)
{ {
RefPtr<Object> object = adopt(*new Object); RefPtr<Object> object = adopt(*new Object);
EXPECT_EQ(object->ref_count(), 1u); EXPECT_EQ(object->ref_count(), 1u);
#ifdef __clang__
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wself-move"
#endif
object = move(object); object = move(object);
#ifdef __clang__
# pragma clang diagnostic pop
#endif
EXPECT_EQ(object->ref_count(), 1u); EXPECT_EQ(object->ref_count(), 1u);
} }