https://gcc.gnu.org/g:c6e6258ea43299399074f8d5f48697b5bc26064e

commit r14-10281-gc6e6258ea43299399074f8d5f48697b5bc26064e
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Tue Jun 4 15:06:44 2024 +0100

    libstdc++: Only define std::span::at for C++26 [PR115335]
    
    In r14-5689-g1fa85dcf656e2f I added std::span::at and made the correct
    changes to the __cpp_lib_span macro (with tests for the correct value in
    C++20/23/26). But I didn't make the declaration of std::span::at
    actually depend on the macro, so it was defined for C++20 and C++23, not
    only for C++26. This fixes that oversight.
    
    libstdc++-v3/ChangeLog:
    
            PR libstdc++/115335
            * include/std/span (span::at): Guard with feature test macro.
    
    (cherry picked from commit 2197814011eec75022aa8550f10621409b69d4a1)

Diff:
---
 libstdc++-v3/include/std/span | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libstdc++-v3/include/std/span b/libstdc++-v3/include/std/span
index 43e9cf82a54..00fc5279152 100644
--- a/libstdc++-v3/include/std/span
+++ b/libstdc++-v3/include/std/span
@@ -287,6 +287,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        return *(this->_M_ptr + __idx);
       }
 
+#if __cpp_lib_span >= 202311L // >= C++26
       [[nodiscard]]
       constexpr reference
       at(size_type __idx) const
@@ -296,6 +297,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
                                       "of size %zu"), __idx, this->size());
        return *(this->_M_ptr + __idx);
       }
+#endif
 
       [[nodiscard]]
       constexpr pointer

Reply via email to