https://gcc.gnu.org/g:1003a428154cd2e556c1fba994d4f3ea2442fc95
commit r15-4516-g1003a428154cd2e556c1fba994d4f3ea2442fc95 Author: Jonathan Wakely <jwak...@redhat.com> Date: Fri Oct 18 11:55:08 2024 +0100 libstdc++: Simplify C++98 std::vector::_M_data_ptr overload set 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. Diff: --- libstdc++-v3/include/bits/stl_vector.h | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h index e284536ad31e..8982ca2b9eee 100644 --- a/libstdc++-v3/include/bits/stl_vector.h +++ b/libstdc++-v3/include/bits/stl_vector.h @@ -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 };