aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Wakely <jwakely@redhat.com>2016-10-24 13:25:28 +0100
committerJonathan Wakely <redi@gcc.gnu.org>2016-10-24 13:25:28 +0100
commit405def8d4667163a262f6c9fcb4a8f675dae4193 (patch)
tree5b3271608e4e24fea113102c1414c3915981d0f1
parent89cc66c4786c9af4251dc146b3e37eb1cce2558e (diff)
downloadgcc-405def8d4667163a262f6c9fcb4a8f675dae4193.zip
gcc-405def8d4667163a262f6c9fcb4a8f675dae4193.tar.gz
gcc-405def8d4667163a262f6c9fcb4a8f675dae4193.tar.bz2
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
-rw-r--r--libstdc++-v3/ChangeLog5
-rw-r--r--libstdc++-v3/include/bits/stl_vector.h26
2 files changed, 19 insertions, 12 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index c344441..7d0a002 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,8 @@
+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>
* include/bits/c++config (_GLIBCXX_BEGIN_NAMESPACE_ALGO)
diff --git a/libstdc++-v3/include/bits/stl_vector.h b/libstdc++-v3/include/bits/stl_vector.h
index efc569b..697a73c 100644
--- a/libstdc++-v3/include/bits/stl_vector.h
+++ b/libstdc++-v3/include/bits/stl_vector.h
@@ -914,19 +914,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
* Returns a pointer such that [data(), data() + size()) is a valid
* range. For a non-empty %vector, data() == &front().
*/
-#if __cplusplus >= 201103L
_Tp*
-#else
- pointer
-#endif
data() _GLIBCXX_NOEXCEPT
{ return _M_data_ptr(this->_M_impl._M_start); }
-#if __cplusplus >= 201103L
const _Tp*
-#else
- const_pointer
-#endif
data() const _GLIBCXX_NOEXCEPT
{ return _M_data_ptr(this->_M_impl._M_start); }
@@ -1558,21 +1550,31 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
}
#endif
-#if __cplusplus >= 201103L
template<typename _Up>
_Up*
- _M_data_ptr(_Up* __ptr) const
+ _M_data_ptr(_Up* __ptr) const _GLIBCXX_NOEXCEPT
{ return __ptr; }
+#if __cplusplus >= 201103L
template<typename _Ptr>
typename std::pointer_traits<_Ptr>::element_type*
_M_data_ptr(_Ptr __ptr) const
{ return empty() ? nullptr : std::__addressof(*__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 __ptr.operator->(); }
+
template<typename _Ptr>
- _Ptr
+ const value_type*
_M_data_ptr(_Ptr __ptr) const
- { return __ptr; }
+ { return __ptr.operator->(); }
#endif
};