]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Simplify C++98 std::vector::_M_data_ptr overload set
authorJonathan Wakely <jwakely@redhat.com>
Fri, 18 Oct 2024 10:55:08 +0000 (11:55 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Mon, 21 Oct 2024 11:12:15 +0000 (12:12 +0100)
We don't need separate overloads for returning a const or non-const
pointer. We can make the member function const and return a non-const
pointer, and let vector::data() const convert it to const as needed.

libstdc++-v3/ChangeLog:

* include/bits/stl_vector.h (vector::_M_data_ptr): Remove
non-const overloads. Always return non-const pointer.

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

index e284536ad31ea8d757c25aa47ba97f4069af54a0..8982ca2b9eeeb971a7833c00714a0c6e81f5b1e0 100644 (file)
@@ -2034,20 +2034,10 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        _M_data_ptr(_Ptr __ptr) const
        { return empty() ? nullptr : std::__to_address(__ptr); }
 #else
-      template<typename _Up>
-       _Up*
-       _M_data_ptr(_Up* __ptr) _GLIBCXX_NOEXCEPT
-       { return __ptr; }
-
       template<typename _Ptr>
        value_type*
-       _M_data_ptr(_Ptr __ptr)
-       { return empty() ? (value_type*)0 : __ptr.operator->(); }
-
-      template<typename _Ptr>
-       const value_type*
        _M_data_ptr(_Ptr __ptr) const
-       { return empty() ? (const value_type*)0 : __ptr.operator->(); }
+       { return empty() ? (value_type*)0 : __ptr.operator->(); }
 #endif
     };