summaryrefslogtreecommitdiffstats
path: root/libstdc++-v3/include/debug
diff options
context:
space:
mode:
authorpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-07-01 16:17:46 +0000
committerpaolo <paolo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-07-01 16:17:46 +0000
commitbcc5d5027806fc3f3304305749a52ccd1523501b (patch)
tree954d3c967b1f7da29c4c24c4a97ea870e97aa70a /libstdc++-v3/include/debug
parent7cb6c048e8de85ffce377c2a187369a6c38ba53d (diff)
downloadppe42-gcc-bcc5d5027806fc3f3304305749a52ccd1523501b.tar.gz
ppe42-gcc-bcc5d5027806fc3f3304305749a52ccd1523501b.zip
2013-07-01 Paolo Carlini <paolo.carlini@oracle.com>
* include/bits/stl_list.h (list<>::insert(iterator, size_type, const value_type&), list<>::insert(iterator, initializer_list<>), list<>::insert(iterator, _InputIterator, _InputIterator), list<>::splice(iterator, list&&), list<>::splice(iterator, list&), list<>::splice(iterator, list&&, iterator), list<>::splice(iterator, list&, iterator), list<>::splice(iterator, list&&, iterator, iterator), list<>::splice(iterator, list&, iterator, iterator)): Adjust C++11 signatures to take const_iterator(s). * include/bits/list.tcc (list<>::insert(const_iterator, size_type, const value_type&), list<>::insert(const_iterator, _InputIterator, _InputIterator)): Define. * include/ext/vstring.h (__versa_string<>::insert(iterator, size_type, _CharT), __versa_string<>::insert(iterator, _InputIterator, _InputIterator), __versa_string<>::insert(iterator, std::initializer_list<>), __versa_string<>::replace(iterator, iterator, _InputIterator, _InputIterator), __versa_string<>:: replace(iterator, iterator, std::initializer_list<>)): Adjust C++11 signatures to take const_iterator(s). (__versa_string<>::_M_replace_dispatch): Take const_iterators. * include/ext/vstring.tcc: Likewise. * include/debug/list: Adjust. * include/profile/list: Likewise. * testsuite/23_containers/list/operations/splice/const_iterator.cc: New. * testsuite/23_containers/list/modifiers/insert/const_iterator.cc: Extend. * testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc: Likewise. * testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc: Likewise. * testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc: Likewise. * testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/assign_neg.cc: Adjust dg-error line number. * testsuite/23_containers/list/requirements/dr438/ constructor_1_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/ constructor_2_neg.cc: Likewise. * testsuite/23_containers/list/requirements/dr438/insert_neg.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@200580 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libstdc++-v3/include/debug')
-rw-r--r--libstdc++-v3/include/debug/list48
1 files changed, 34 insertions, 14 deletions
diff --git a/libstdc++-v3/include/debug/list b/libstdc++-v3/include/debug/list
index c175de01f23..1ae8507ca86 100644
--- a/libstdc++-v3/include/debug/list
+++ b/libstdc++-v3/include/debug/list
@@ -403,28 +403,46 @@ namespace __debug
insert(const_iterator __position, _Tp&& __x)
{ return emplace(__position, std::move(__x)); }
- void
- insert(iterator __p, initializer_list<value_type> __l)
+ iterator
+ insert(const_iterator __p, initializer_list<value_type> __l)
{
__glibcxx_check_insert(__p);
- _Base::insert(__p.base(), __l);
+ return iterator(_Base::insert(__p.base(), __l), this);
}
#endif
+#if __cplusplus >= 201103L
+ iterator
+ insert(const_iterator __position, size_type __n, const _Tp& __x)
+ {
+ __glibcxx_check_insert(__position);
+ return iterator(_Base::insert(__position.base(), __n, __x), this);
+ }
+#else
void
insert(iterator __position, size_type __n, const _Tp& __x)
{
__glibcxx_check_insert(__position);
_Base::insert(__position.base(), __n, __x);
}
+#endif
#if __cplusplus >= 201103L
template<class _InputIterator,
typename = std::_RequireInputIter<_InputIterator>>
+ iterator
+ insert(const_iterator __position, _InputIterator __first,
+ _InputIterator __last)
+ {
+ __glibcxx_check_insert_range(__position, __first, __last);
+ return iterator(_Base::insert(__position.base(),
+ __gnu_debug::__base(__first),
+ __gnu_debug::__base(__last)),
+ this);
+ }
#else
template<class _InputIterator>
-#endif
- void
+ void
insert(iterator __position, _InputIterator __first,
_InputIterator __last)
{
@@ -432,6 +450,7 @@ namespace __debug
_Base::insert(__position.base(), __gnu_debug::__base(__first),
__gnu_debug::__base(__last));
}
+#endif
private:
_Base_iterator
@@ -496,7 +515,7 @@ namespace __debug
// 23.2.2.4 list operations:
void
#if __cplusplus >= 201103L
- splice(iterator __position, list&& __x)
+ splice(const_iterator __position, list&& __x)
#else
splice(iterator __position, list& __x)
#endif
@@ -510,13 +529,13 @@ namespace __debug
#if __cplusplus >= 201103L
void
- splice(iterator __position, list& __x)
+ splice(const_iterator __position, list& __x)
{ splice(__position, std::move(__x)); }
#endif
void
#if __cplusplus >= 201103L
- splice(iterator __position, list&& __x, iterator __i)
+ splice(const_iterator __position, list&& __x, const_iterator __i)
#else
splice(iterator __position, list& __x, iterator __i)
#endif
@@ -542,14 +561,14 @@ namespace __debug
#if __cplusplus >= 201103L
void
- splice(iterator __position, list& __x, iterator __i)
+ splice(const_iterator __position, list& __x, const_iterator __i)
{ splice(__position, std::move(__x), __i); }
#endif
void
#if __cplusplus >= 201103L
- splice(iterator __position, list&& __x, iterator __first,
- iterator __last)
+ splice(const_iterator __position, list&& __x, const_iterator __first,
+ const_iterator __last)
#else
splice(iterator __position, list& __x, iterator __first,
iterator __last)
@@ -565,14 +584,14 @@ namespace __debug
// We used to perform the splice_alloc check: not anymore, redundant
// after implementing the relevant bits of N1599.
- for (_Base_iterator __tmp = __first.base();
+ for (_Base_const_iterator __tmp = __first.base();
__tmp != __last.base(); ++__tmp)
{
_GLIBCXX_DEBUG_VERIFY(__tmp != _Base::end(),
_M_message(__gnu_debug::__msg_valid_range)
._M_iterator(__first, "first")
._M_iterator(__last, "last"));
- _GLIBCXX_DEBUG_VERIFY(&__x != this || __tmp != __position,
+ _GLIBCXX_DEBUG_VERIFY(&__x != this || __tmp != __position.base(),
_M_message(__gnu_debug::__msg_splice_overlap)
._M_iterator(__tmp, "position")
._M_iterator(__first, "first")
@@ -588,7 +607,8 @@ namespace __debug
#if __cplusplus >= 201103L
void
- splice(iterator __position, list& __x, iterator __first, iterator __last)
+ splice(const_iterator __position, list& __x,
+ const_iterator __first, const_iterator __last)
{ splice(__position, std::move(__x), __first, __last); }
#endif
OpenPOWER on IntegriCloud