]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
deque: Constrain InputIterator parameters.
authorJonathan Wakely <jwakely.gcc@gmail.com>
Tue, 6 Nov 2012 00:06:42 +0000 (00:06 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Tue, 6 Nov 2012 00:06:42 +0000 (00:06 +0000)
* include/profile/deque: Constrain InputIterator parameters.
* include/profile/forward_list: Likewise.
* include/profile/list: Likewise.
* include/profile/map.h: Likewise.
* include/profile/multimap.h: Likewise.
* include/profile/set.h: Likewise.
* include/profile/multiset.h: Likewise.
* include/profile/vector: Likewise.

From-SVN: r193196

libstdc++-v3/ChangeLog
libstdc++-v3/include/profile/deque
libstdc++-v3/include/profile/forward_list
libstdc++-v3/include/profile/list
libstdc++-v3/include/profile/map.h
libstdc++-v3/include/profile/multimap.h
libstdc++-v3/include/profile/multiset.h
libstdc++-v3/include/profile/set.h
libstdc++-v3/include/profile/vector

index 4938ace66546ae3bf2d659c3e8c6ab0ffc34aa03..3164b03f3f6cbdc36680260831f20f7494f051eb 100644 (file)
@@ -1,3 +1,14 @@
+2012-11-05  Jonathan Wakely  <jwakely.gcc@gmail.com>
+
+       * include/profile/deque: Constrain InputIterator parameters.
+       * include/profile/forward_list: Likewise.
+       * include/profile/list: Likewise.
+       * include/profile/map.h: Likewise.
+       * include/profile/multimap.h: Likewise.
+       * include/profile/set.h: Likewise.
+       * include/profile/multiset.h: Likewise.
+       * include/profile/vector: Likewise.
+
 2012-11-05  Jonathan Wakely  <jwakely.gcc@gmail.com>
 
        * include/profile/forward_list: Update to meet allocator-aware
index 48a18c984d98ff98f2affdcbc9cc1b71086888dc..99cc46524a6944dee67a1cdad792c88a47c28ceb 100644 (file)
@@ -1,6 +1,6 @@
 // Profiling deque implementation -*- C++ -*-
 
-// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2009-2012 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -79,7 +79,12 @@ namespace __profile
       : _Base(__n, __value, __a) { }
 #endif
 
-      template<class _InputIterator>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
+      template<typename _InputIterator>
+#endif
         deque(_InputIterator __first, _InputIterator __last,
              const _Allocator& __a = _Allocator())
        : _Base(__first, __last, __a)
@@ -129,7 +134,12 @@ namespace __profile
       }
 #endif
 
-      template<class _InputIterator>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
+      template<typename _InputIterator>
+#endif
         void
         assign(_InputIterator __first, _InputIterator __last)
         {
@@ -343,7 +353,12 @@ namespace __profile
        _Base::insert(__position, __n, __x);
       }
 
-      template<class _InputIterator>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
+      template<typename _InputIterator>
+#endif
         void
         insert(iterator __position,
               _InputIterator __first, _InputIterator __last)
index a44ea7aeeb4878ed81a77ff03ccacfd017395419..9cb58202f33f8b3a8d31565b26f5465a798e8f69 100644 (file)
@@ -77,7 +77,8 @@ namespace __profile
       : _Base(__n, __value, __al)
       { }
 
-      template<typename _InputIterator>
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
         forward_list(_InputIterator __first, _InputIterator __last,
                      const _Alloc& __al = _Alloc())
         : _Base(__first, __last, __al)
index 33b1ae64d87951de818947caf8659b127e82d8f0..2f8535e946e286817bc1f3b63f7dc3b4b1809401 100644 (file)
@@ -1,6 +1,6 @@
 // Profiling list implementation -*- C++ -*-
 
-// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2009-2012 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -99,7 +99,12 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
       }
 #endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<class _InputIterator>
+#endif
       list(_InputIterator __first, _InputIterator __last,
           const _Allocator& __a = _Allocator())
       : _Base(__first, __last, __a)
@@ -171,7 +176,12 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
       {        _Base::assign(__l); }
 #endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<class _InputIterator>
+#endif
         void
         assign(_InputIterator __first, _InputIterator __last)
         { _Base::assign(__first, __last); }
@@ -328,7 +338,8 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
         emplace(iterator __position, _Args&&... __args)
        {
          return iterator(_Base::emplace(__position.base(),
-                                         std::forward<_Args>(__args)...));
+                                         std::forward<_Args>(__args)...),
+                         this);
        }
 #endif
 
@@ -363,14 +374,19 @@ template<typename _Tp, typename _Allocator = std::allocator<_Tp> >
        _Base::insert(__position.base(), __n, __x);
       }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<class _InputIterator>
+#endif
         void
         insert(iterator __position, _InputIterator __first,
               _InputIterator __last)
-      {
-        _M_profile_insert(this, __position, size());
-        _Base::insert(__position.base(), __first, __last);
-      }
+       {
+         _M_profile_insert(this, __position, size());
+         _Base::insert(__position.base(), __first, __last);
+       }
 
       iterator
       erase(iterator __position)
index dcc693138674c870059fda52bda38c7d892e8da0..fe2f4564d0ceb5040900b75529e171267bae8675 100644 (file)
@@ -69,7 +69,12 @@ namespace __profile
       : _Base(__comp, __a)
       { __profcxx_map_to_unordered_map_construct(this); }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<typename _InputIterator>
+#endif
         map(_InputIterator __first, _InputIterator __last,
            const _Compare& __comp = _Compare(),
            const _Allocator& __a = _Allocator())
@@ -252,7 +257,7 @@ namespace __profile
        emplace_hint(const_iterator __pos, _Args&&... __args)
        {
          size_type size_before = size();
-         auto __res = _Base::emplace_hint(__pos.base(),
+         auto __res = _Base::emplace_hint(__pos,
                                           std::forward<_Args>(__args)...);
          __profcxx_map_to_unordered_map_insert(this, size_before,
                                                size() - size_before);
@@ -326,7 +331,12 @@ namespace __profile
       }
 #endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<typename _InputIterator>
+#endif
         void
         insert(_InputIterator __first, _InputIterator __last)
         {
index 2268161365b79acc63d6d113a8d268ddcc9975cb..42662af363eb7ce45a0e32f08eeec0855a368cb0 100644 (file)
@@ -68,7 +68,12 @@ namespace __profile
                        const _Allocator& __a = _Allocator())
       : _Base(__comp, __a) { }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<typename _InputIterator>
+#endif
       multimap(_InputIterator __first, _InputIterator __last,
               const _Compare& __comp = _Compare(),
               const _Allocator& __a = _Allocator())
@@ -234,7 +239,12 @@ namespace __profile
                                        std::forward<_Pair>(__x))); }
 #endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<typename _InputIterator>
+#endif
         void
         insert(_InputIterator __first, _InputIterator __last)
         { _Base::insert(__first, __last); }
index f76b4fac6d87bc3ecbed0a6d33c3e87bc5b88ca8..358879726d92c9e7bfbd7fcb59c407f1445eef0e 100644 (file)
@@ -1,6 +1,6 @@
 // Profiling multiset implementation -*- C++ -*-
 
-// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2009-2012 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -68,7 +68,12 @@ namespace __profile
                        const _Allocator& __a = _Allocator())
       : _Base(__comp, __a) { }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<typename _InputIterator>
+#endif
         multiset(_InputIterator __first, _InputIterator __last,
                 const _Compare& __comp = _Compare(),
                 const _Allocator& __a = _Allocator())
@@ -215,7 +220,12 @@ namespace __profile
       { return iterator(_Base::insert(__position, std::move(__x))); }
 #endif
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<typename _InputIterator>
+#endif
         void
         insert(_InputIterator __first, _InputIterator __last)
         { _Base::insert(__first, __last); }
index c0aa180893fd054a283e4be7e3e9b0c83bf1ce08..5aadab8317cd1c0c29b785b63d27edad31633e19 100644 (file)
@@ -1,6 +1,6 @@
 // Profiling set implementation -*- C++ -*-
 
-// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2009-2012 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -68,7 +68,12 @@ namespace __profile
                   const _Allocator& __a = _Allocator())
       : _Base(__comp, __a) { }
 
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
       template<typename _InputIterator>
+#endif
         set(_InputIterator __first, _InputIterator __last,
            const _Compare& __comp = _Compare(),
            const _Allocator& __a = _Allocator())
@@ -230,7 +235,12 @@ namespace __profile
       { return iterator(_Base::insert(__position, std::move(__x))); }
 #endif
 
-      template <typename _InputIterator>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
+      template<typename _InputIterator>
+#endif
         void
         insert(_InputIterator __first, _InputIterator __last)
         { _Base::insert(__first, __last); }
index 8a3e681b847a90d31a98125a02a389c9a7070526..fcd6962799556a12d3f379af67882a68dfe8f22c 100644 (file)
@@ -1,6 +1,6 @@
 // Profiling vector implementation -*- C++ -*-
 
-// Copyright (C) 2009, 2010, 2011 Free Software Foundation, Inc.
+// Copyright (C) 2009-2012 Free Software Foundation, Inc.
 //
 // This file is part of the GNU ISO C++ Library.  This library is free
 // software; you can redistribute it and/or modify it under the
@@ -109,7 +109,12 @@ namespace __profile
       }
 #endif
 
-      template<class _InputIterator>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
+      template<typename _InputIterator>
+#endif
         vector(_InputIterator __first, _InputIterator __last,
               const _Allocator& __a = _Allocator())
        : _Base(__first, __last, __a)
@@ -401,7 +406,12 @@ namespace __profile
         _M_profile_resize(this, __old_size, this->capacity());
       }
 
-      template<class _InputIterator>
+#ifdef __GXX_EXPERIMENTAL_CXX0X__
+      template<typename _InputIterator,
+              typename = std::_RequireInputIter<_InputIterator>>
+#else
+      template<typename _InputIterator>
+#endif
       void
       insert(iterator __position,
              _InputIterator __first, _InputIterator __last)