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.
_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
};