external/firebird: Make comparison operator member functions const

see commit message of
external/firebird/0001-Make-comparison-operator-member-functions-const.patch.1
for details

Change-Id: I559e4b6ef2dbf3800ff5013dcde078d69296d2fb
Reviewed-on: https://gerrit.libreoffice.org/81261
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
Stephan Bergmann
2019-10-21 21:56:57 +02:00
parent 6243ea0374
commit 77f00a0237
2 changed files with 53 additions and 0 deletions
@@ -0,0 +1,49 @@
From 15390d75ee6ca429dbbe15ea04214df8a30fbd48 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Mon, 21 Oct 2019 17:54:18 +0200
Subject: [PATCH] Make comparison operator member functions const
...which avoids overload resolution ambiguities in C++20, when a synthesized
candidate of operator == for a reversed-argument rewrite conflicts with the
actual operator ==, due to the asymmetric const-ness of the implicit object
parameter and the RHS parameter. (As observed with recent Clang 10 trunk with
-std=c++2a when building firebird as part of LibreOffice:
> workdir/UnpackedTarball/firebird/src/jrd/inf.cpp:1139:62: error: use of overloaded operator '!=' is ambiguous (with operand types 'RuntimeStatistics::Iterator' and 'Jrd::RuntimeStatistics::Iterator')
> for (RuntimeStatistics::Iterator iter = stats.begin(); iter != stats.end(); ++iter)
> ~~~~ ^ ~~~~~~~~~~~
> workdir/UnpackedTarball/firebird/src/jrd/../dsql/../jrd/RuntimeStatistics.h:283:8: note: candidate function
> bool operator!=(const Iterator& other)
> ^
> workdir/UnpackedTarball/firebird/src/jrd/../dsql/../jrd/RuntimeStatistics.h:278:8: note: candidate function
> bool operator==(const Iterator& other)
> ^
> workdir/UnpackedTarball/firebird/src/jrd/../dsql/../jrd/RuntimeStatistics.h:278:8: note: candidate function (with reversed parameter order)
)
---
src/jrd/RuntimeStatistics.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/jrd/RuntimeStatistics.h b/src/jrd/RuntimeStatistics.h
index 74a03de2ad..fab286ad1a 100644
--- a/src/jrd/RuntimeStatistics.h
+++ b/src/jrd/RuntimeStatistics.h
@@ -290,12 +290,12 @@ public:
{}
public:
- bool operator==(const Iterator& other)
+ bool operator==(const Iterator& other) const
{
return (m_counts == other.m_counts);
}
- bool operator!=(const Iterator& other)
+ bool operator!=(const Iterator& other) const
{
return (m_counts != other.m_counts);
}
--
2.21.0
+4
View File
@@ -18,6 +18,9 @@ $(eval $(call gb_UnpackedTarball_update_autoconf_configs,firebird,\
extern/editline \
))
# * external/firebird/0001-Make-comparison-operator-member-functions-const.patch.1 is upstream at
# <https://github.com/FirebirdSQL/firebird/pull/227> "Make comparison operator member functions
# const":
$(eval $(call gb_UnpackedTarball_add_patches,firebird,\
external/firebird/firebird.disable-ib-util-not-found.patch.1 \
external/firebird/firebird-Engine12.patch \
@@ -32,6 +35,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,firebird,\
external/firebird/ubsan.patch \
external/firebird/asan.patch \
external/firebird/firebird-tdf125284.patch.1 \
external/firebird/0001-Make-comparison-operator-member-functions-const.patch.1 \
))
ifeq ($(OS),WNT)