[gcc r12-8937] libstdc++: Fix tests with non-const operator==

Jonathan Wakely redi@gcc.gnu.org
Thu Nov 24 16:36:36 GMT 2022


https://gcc.gnu.org/g:905047145425c0cf072d3b965e18dc0c1c1ced7a

commit r12-8937-g905047145425c0cf072d3b965e18dc0c1c1ced7a
Author: Jonathan Wakely <jwakely@redhat.com>
Date:   Thu Nov 10 14:11:27 2022 +0000

    libstdc++: Fix tests with non-const operator==
    
    These tests fail in strict -std=c++20 mode but their equality ops don't
    need to be non-const, it looks like an accident.
    
    This fixes two FAILs with -std=c++20:
    FAIL: 20_util/tuple/swap.cc (test for excess errors)
    FAIL: 26_numerics/valarray/87641.cc (test for excess errors)
    
    libstdc++-v3/ChangeLog:
    
            * testsuite/20_util/tuple/swap.cc (MoveOnly::operator==): Add
            const qualifier.
            * testsuite/26_numerics/valarray/87641.cc (X::operator==):
            Likewise.
    
    (cherry picked from commit fbad7a74aaaddea3d7b39045a09dd3860603658e)

Diff:
---
 libstdc++-v3/testsuite/20_util/tuple/swap.cc         | 2 +-
 libstdc++-v3/testsuite/26_numerics/valarray/87641.cc | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libstdc++-v3/testsuite/20_util/tuple/swap.cc b/libstdc++-v3/testsuite/20_util/tuple/swap.cc
index c086a4f1a8e..30c8322f01c 100644
--- a/libstdc++-v3/testsuite/20_util/tuple/swap.cc
+++ b/libstdc++-v3/testsuite/20_util/tuple/swap.cc
@@ -38,7 +38,7 @@ struct MoveOnly
   MoveOnly(MoveOnly const&) = delete;
   MoveOnly& operator=(MoveOnly const&) = delete;
 
-  bool operator==(MoveOnly const& m)
+  bool operator==(MoveOnly const& m) const
   { return i == m.i; }
 
   void swap(MoveOnly& m)
diff --git a/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc b/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
index 38c35851716..4a6e402831d 100644
--- a/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
+++ b/libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
@@ -39,7 +39,7 @@ struct X
   X() : val(1) { }
 
   X& operator+=(const X& x) { val += x.val; return *this; }
-  bool operator==(const X& x) { return val == x.val; }
+  bool operator==(const X& x) const { return val == x.val; }
 
   int val;
 };


More information about the Libstdc++-cvs mailing list