From: Jonathan Wakely Date: Tue, 6 Nov 2012 00:06:42 +0000 (+0000) Subject: deque: Constrain InputIterator parameters. X-Git-Tag: releases/gcc-4.8.0~2255 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3c7d8b035a57419b706d0855e14d5b50b565ed7e;p=thirdparty%2Fgcc.git 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 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 4938ace66546..3164b03f3f6c 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,14 @@ +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 diff --git a/libstdc++-v3/include/profile/deque b/libstdc++-v3/include/profile/deque index 48a18c984d98..99cc46524a69 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 a44ea7aeeb48..9cb58202f33f 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 33b1ae64d879..2f8535e946e2 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 dcc693138674..fe2f4564d0ce 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 2268161365b7..42662af363eb 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 f76b4fac6d87..358879726d92 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 c0aa180893fd..5aadab8317cd 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 8a3e681b847a..fcd696279955 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)