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>
Thu, 21 Oct 2021 01:43:42 +0000 (21:43 -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.

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

index 8afd675..0090b2d 100644 (file)
@@ -1821,13 +1821,14 @@ _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>*
+      constexpr const iter_value_t<_It>*
       operator->() const noexcept
       { return std::__addressof(_M_keep); }
     };
@@ -1836,13 +1837,14 @@ _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>&
+      constexpr const iter_value_t<_It>&
       operator*() const noexcept
       { return _M_keep; }
     };