diff mbox series

libstdc++: Simplify C++98 std::vector::_M_data_ptr overload set

Message ID 20241018120243.344764-1-jwakely@redhat.com
State New
Headers show
Series libstdc++: Simplify C++98 std::vector::_M_data_ptr overload set | expand

Commit Message

Jonathan Wakely Oct. 18, 2024, 12:01 p.m. UTC
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.
---

Tested x86_64-linux.

 libstdc++-v3/include/bits/stl_vector.h | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)
diff mbox series

Patch

diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index e284536ad31..8982ca2b9ee 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
     };