diff options
author | Jonathan Wakely <jwakely.gcc@gmail.com> | 2012-11-06 00:06:42 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2012-11-06 00:06:42 +0000 |
commit | 3c7d8b035a57419b706d0855e14d5b50b565ed7e (patch) | |
tree | a0c6c1ab914365cdd8c1d0ced44ef0e6d6774e1a | |
parent | 9052f54ccb2851e9814e86b40f4442411c96d822 (diff) | |
download | gcc-3c7d8b035a57419b706d0855e14d5b50b565ed7e.zip gcc-3c7d8b035a57419b706d0855e14d5b50b565ed7e.tar.gz gcc-3c7d8b035a57419b706d0855e14d5b50b565ed7e.tar.bz2 |
deque: Constrain InputIterator parameters.
* 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
-rw-r--r-- | libstdc++-v3/ChangeLog | 11 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/deque | 23 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/forward_list | 3 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/list | 28 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/map.h | 12 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/multimap.h | 10 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/multiset.h | 12 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/set.h | 14 | ||||
-rw-r--r-- | libstdc++-v3/include/profile/vector | 16 |
9 files changed, 111 insertions, 18 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4938ace..3164b03 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,16 @@ 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 requirements. * include/debug/forward_list: Likewise. diff --git a/libstdc++-v3/include/profile/deque b/libstdc++-v3/include/profile/deque index 48a18c9..99cc465 100644 --- a/libstdc++-v3/include/profile/deque +++ b/libstdc++-v3/include/profile/deque @@ -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) diff --git a/libstdc++-v3/include/profile/forward_list b/libstdc++-v3/include/profile/forward_list index a44ea7a..9cb5820 100644 --- a/libstdc++-v3/include/profile/forward_list +++ b/libstdc++-v3/include/profile/forward_list @@ -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) diff --git a/libstdc++-v3/include/profile/list b/libstdc++-v3/include/profile/list index 33b1ae6..2f8535e 100644 --- a/libstdc++-v3/include/profile/list +++ b/libstdc++-v3/include/profile/list @@ -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) diff --git a/libstdc++-v3/include/profile/map.h b/libstdc++-v3/include/profile/map.h index dcc6931..fe2f456 100644 --- a/libstdc++-v3/include/profile/map.h +++ b/libstdc++-v3/include/profile/map.h @@ -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) { diff --git a/libstdc++-v3/include/profile/multimap.h b/libstdc++-v3/include/profile/multimap.h index 2268161..42662af 100644 --- a/libstdc++-v3/include/profile/multimap.h +++ b/libstdc++-v3/include/profile/multimap.h @@ -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); } diff --git a/libstdc++-v3/include/profile/multiset.h b/libstdc++-v3/include/profile/multiset.h index f76b4fa..3588797 100644 --- a/libstdc++-v3/include/profile/multiset.h +++ b/libstdc++-v3/include/profile/multiset.h @@ -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); } diff --git a/libstdc++-v3/include/profile/set.h b/libstdc++-v3/include/profile/set.h index c0aa180..5aadab8 100644 --- a/libstdc++-v3/include/profile/set.h +++ b/libstdc++-v3/include/profile/set.h @@ -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); } diff --git a/libstdc++-v3/include/profile/vector b/libstdc++-v3/include/profile/vector index 8a3e681..fcd6962 100644 --- a/libstdc++-v3/include/profile/vector +++ b/libstdc++-v3/include/profile/vector @@ -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) |