Commit 405def8d by Jonathan Wakely Committed by Jonathan Wakely

Make vector::data() return type consistent in C++98

	* include/bits/stl_vector.h (vector::_M_data_ptr, vector::data):
	Change return type of non-standard C++98 extension to match C++11.

From-SVN: r241475
parent 89cc66c4
2016-10-24 Jonathan Wakely <jwakely@redhat.com>
* include/bits/stl_vector.h (vector::_M_data_ptr, vector::data):
Change return type of non-standard C++98 extension to match C++11.
2016-10-22 François Dumont <fdumont@gcc.gnu.org> 2016-10-22 François Dumont <fdumont@gcc.gnu.org>
* include/bits/c++config (_GLIBCXX_BEGIN_NAMESPACE_ALGO) * include/bits/c++config (_GLIBCXX_BEGIN_NAMESPACE_ALGO)
......
...@@ -914,19 +914,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -914,19 +914,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
* Returns a pointer such that [data(), data() + size()) is a valid * Returns a pointer such that [data(), data() + size()) is a valid
* range. For a non-empty %vector, data() == &front(). * range. For a non-empty %vector, data() == &front().
*/ */
#if __cplusplus >= 201103L
_Tp* _Tp*
#else
pointer
#endif
data() _GLIBCXX_NOEXCEPT data() _GLIBCXX_NOEXCEPT
{ return _M_data_ptr(this->_M_impl._M_start); } { return _M_data_ptr(this->_M_impl._M_start); }
#if __cplusplus >= 201103L
const _Tp* const _Tp*
#else
const_pointer
#endif
data() const _GLIBCXX_NOEXCEPT data() const _GLIBCXX_NOEXCEPT
{ return _M_data_ptr(this->_M_impl._M_start); } { return _M_data_ptr(this->_M_impl._M_start); }
...@@ -1558,21 +1550,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -1558,21 +1550,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
} }
#endif #endif
#if __cplusplus >= 201103L
template<typename _Up> template<typename _Up>
_Up* _Up*
_M_data_ptr(_Up* __ptr) const _M_data_ptr(_Up* __ptr) const _GLIBCXX_NOEXCEPT
{ return __ptr; } { return __ptr; }
#if __cplusplus >= 201103L
template<typename _Ptr> template<typename _Ptr>
typename std::pointer_traits<_Ptr>::element_type* typename std::pointer_traits<_Ptr>::element_type*
_M_data_ptr(_Ptr __ptr) const _M_data_ptr(_Ptr __ptr) const
{ return empty() ? nullptr : std::__addressof(*__ptr); } { return empty() ? nullptr : std::__addressof(*__ptr); }
#else #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 __ptr.operator->(); }
template<typename _Ptr> template<typename _Ptr>
_Ptr const value_type*
_M_data_ptr(_Ptr __ptr) const _M_data_ptr(_Ptr __ptr) const
{ return __ptr; } { return __ptr.operator->(); }
#endif #endif
}; };
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment