From ccbf0b2f9a5bff7efe62c418825583be049b332c Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 25 Apr 2021 18:53:26 +0200 Subject: [PATCH] Define wxDataFormat comparison operator overload taking it itself We still can't avoid defining the overload taking NativeFormat due to an ambiguity that we would have otherwise between converting from NativeFormat to wxDataFormat or vice versa when comparing them (it would have been better to avoid implicit conversions in all directions, of course, but this is how it was done back in e1ee679c2e (wxDataObejct and related changes (won't compile right now), 1999-10-21) and it's too late to change it now), but we can at least define an overload taking wxDataFormat itself and not wxDataFormatId to make things slightly more logical and avoid -Wambiguous-reversed-operator clang 12 warnings. --- include/wx/gtk/dataform.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/include/wx/gtk/dataform.h b/include/wx/gtk/dataform.h index 9389a99765..ae5a2c232b 100644 --- a/include/wx/gtk/dataform.h +++ b/include/wx/gtk/dataform.h @@ -33,15 +33,18 @@ public: wxDataFormat& operator=(NativeFormat format) { SetId(format); return *this; } - // comparison (must have both versions) + // comparison (note that we rely on implicit conversions for comparison + // with wxDataFormatId, but have to provide them explicitly for comparison + // with NativeFormat to avoid ambiguity between comparing from it to + // wxDataFormat or vice versa) bool operator==(NativeFormat format) const { return m_format == (NativeFormat)format; } bool operator!=(NativeFormat format) const { return m_format != (NativeFormat)format; } - bool operator==(wxDataFormatId format) const - { return m_type == (wxDataFormatId)format; } - bool operator!=(wxDataFormatId format) const - { return m_type != (wxDataFormatId)format; } + bool operator==(const wxDataFormat& other) const + { return m_format == other.m_format; } + bool operator!=(const wxDataFormat& other) const + { return m_format != other.m_format; } // explicit and implicit conversions to NativeFormat which is one of // standard data types (implicit conversion is useful for preserving the