From 3c7d8b035a57419b706d0855e14d5b50b565ed7e Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 6 Nov 2012 00:06:42 +0000 Subject: [PATCH] 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 --- libstdc++-v3/ChangeLog | 11 +++++++++++ libstdc++-v3/include/profile/deque | 23 +++++++++++++++++++---- libstdc++-v3/include/profile/forward_list | 3 ++- libstdc++-v3/include/profile/list | 28 ++++++++++++++++++++++------ libstdc++-v3/include/profile/map.h | 12 +++++++++++- libstdc++-v3/include/profile/multimap.h | 10 ++++++++++ libstdc++-v3/include/profile/multiset.h | 12 +++++++++++- libstdc++-v3/include/profile/set.h | 14 ++++++++++++-- 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 + * 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 + * 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 +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else + template +#endif deque(_InputIterator __first, _InputIterator __last, const _Allocator& __a = _Allocator()) : _Base(__first, __last, __a) @@ -129,7 +134,12 @@ namespace __profile } #endif - template +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else + template +#endif void assign(_InputIterator __first, _InputIterator __last) { @@ -343,7 +353,12 @@ namespace __profile _Base::insert(__position, __n, __x); } - template +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else + template +#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 + template> 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 > } #endif +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else template +#endif list(_InputIterator __first, _InputIterator __last, const _Allocator& __a = _Allocator()) : _Base(__first, __last, __a) @@ -171,7 +176,12 @@ template > { _Base::assign(__l); } #endif +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else template +#endif void assign(_InputIterator __first, _InputIterator __last) { _Base::assign(__first, __last); } @@ -328,7 +338,8 @@ template > 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 > _Base::insert(__position.base(), __n, __x); } +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else template +#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> +#else template +#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> +#else template +#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> +#else template +#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> +#else template +#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> +#else template +#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> +#else template +#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> +#else template +#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 +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else + template +#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 +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else + template +#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 +#ifdef __GXX_EXPERIMENTAL_CXX0X__ + template> +#else + template +#endif void insert(iterator __position, _InputIterator __first, _InputIterator __last) -- 2.7.4