]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Implement LWG 3595 changes to common_iterator
authorPatrick Palka <ppalka@redhat.com>
Thu, 21 Oct 2021 01:43:42 +0000 (21:43 -0400)
committerPatrick Palka <ppalka@redhat.com>
Tue, 12 Apr 2022 12:37:28 +0000 (08:37 -0400)
libstdc++-v3/ChangeLog:

* include/bits/stl_iterator.h (common_iterator::__arrow_proxy):
Make fully constexpr as per LWG 3595.
(common_iterator::__postfix_proxy): Likewise.

(cherry picked from commit 1556e447c0fee5c77ccd9bda243d5281e10e895b)

libstdc++-v3/include/bits/stl_iterator.h

index 79e9959fc58ec66b14321931ced2c2fe435f5eb7..beeb4ef4c8a7536cdc3cbdbee8382677bedbfebd 100644 (file)
@@ -1711,14 +1711,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     {
       iter_value_t<_It> _M_keep;
 
+      constexpr
       __arrow_proxy(iter_reference_t<_It>&& __x)
       : _M_keep(std::move(__x)) { }
 
       friend class common_iterator;
 
     public:
-      const iter_value_t<_It>*
-      operator->() const
+      constexpr const iter_value_t<_It>*
+      operator->() const noexcept
       { return std::__addressof(_M_keep); }
     };
 
@@ -1726,14 +1727,15 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
     {
       iter_value_t<_It> _M_keep;
 
+      constexpr
       __postfix_proxy(iter_reference_t<_It>&& __x)
       : _M_keep(std::forward<iter_reference_t<_It>>(__x)) { }
 
       friend class common_iterator;
 
     public:
-      const iter_value_t<_It>&
-      operator*() const
+      constexpr const iter_value_t<_It>&
+      operator*() const noexcept
       { return _M_keep; }
     };