From 9ac01c41417205db4187f95fcfb9bde864cc6485 Mon Sep 17 00:00:00 2001 From: Giuliano Procida Date: Thu, 31 Aug 2023 16:59:15 +0100 Subject: [PATCH] operator!= fixes for C++-20 Without these changes, more recent versions of Clang will start to emit diagnostics: src/abg-ir.cc:15407:13: error: member 'operator!=' found in multiple base classes of different types 15407 | return *l == *r; | ^ src/abg-ir.cc:14123:12: note: member found by ambiguous name lookup 14123 | type_base::operator!=(const type_base& other) const | ^ src/abg-ir.cc:5162:12: note: member found by ambiguous name lookup 5162 | decl_base::operator!=(const decl_base& other) const | ^ This fix was contributed by Ilya Biryukov. * include/abg-ir.h (qualified_typedef): Add definition of operator!=. (pointer_type_def): Likewise. (reference_type_def): Likewise. (class_or_union): Likewise. Reported-by: Ilya Biryukov Signed-off-by: Giuliano Procida Signed-off-by: Dodji Seketeli --- include/abg-ir.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/include/abg-ir.h b/include/abg-ir.h index 85c14266..e6728112 100644 --- a/include/abg-ir.h +++ b/include/abg-ir.h @@ -2252,6 +2252,11 @@ public: virtual bool operator==(const qualified_type_def&) const; + virtual bool + operator!=(const qualified_type_def& other) const { + return !(*this == other); + } + CV get_cv_quals() const; @@ -2354,6 +2359,11 @@ public: bool operator==(const pointer_type_def&) const; + bool + operator!=(const pointer_type_def& other) const { + return !(*this == other); + } + const type_base_sptr get_pointed_to_type() const; @@ -2418,6 +2428,11 @@ public: bool operator==(const reference_type_def&) const; + bool + operator!=(const reference_type_def& other) const { + return !(*this == other); + } + type_base_sptr get_pointed_to_type() const; @@ -4092,6 +4107,11 @@ public: virtual bool operator==(const class_or_union&) const; + virtual bool + operator !=(const class_or_union& other) const { + return !(*this == other); + } + virtual bool traverse(ir_node_visitor& v);