]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - libstdc++-v3/include/debug/list
stl_list.h (list<>::insert(iterator, size_type, const value_type&), [...]): Adjust...
[thirdparty/gcc.git] / libstdc++-v3 / include / debug / list
index c175de01f23a87a3808eca217cd6470ab8763d2c..1ae8507ca864e73ab6e8687883c388c25fc2f726 100644 (file)
@@ -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