From 30abb701b1e8fc345d49a81232942b282ec8aef8 Mon Sep 17 00:00:00 2001 From: paolo Date: Sun, 3 Jan 2010 14:50:09 +0000 Subject: [PATCH] 2010-01-03 Paolo Carlini * include/tr1_impl/hashtable (_Hashtable<>): Remove insert_return_type typedef. * include/profile/unordered_map (unordered_map<>::insert(const value_type&), unordered_multimap<>::insert(const value_type&)): Adjust. * include/profile/unordered_set (unordered_set<>::insert(const value_type&), unordered_multimap<>::insert(const value_type&)): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@155587 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 10 ++++++++++ libstdc++-v3/include/profile/unordered_map | 22 +++++++++++----------- libstdc++-v3/include/profile/unordered_set | 22 +++++++++++++++------- libstdc++-v3/include/tr1_impl/hashtable | 5 +---- 4 files changed, 37 insertions(+), 22 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index a4c525ccf3c..f768680e965 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,5 +1,15 @@ 2010-01-03 Paolo Carlini + * include/tr1_impl/hashtable (_Hashtable<>): Remove insert_return_type + typedef. + * include/profile/unordered_map (unordered_map<>::insert(const + value_type&), unordered_multimap<>::insert(const value_type&)): Adjust. + * include/profile/unordered_set (unordered_set<>::insert(const + value_type&), unordered_multimap<>::insert(const value_type&)): + Likewise. + +2010-01-03 Paolo Carlini + * include/bits/stl_pair.h (pair<>::pair(_U1&&, const _T2&), pair<>::pair(const _T1&, _U2&&), pair<>::pair(_U1&&, _U2&&)): Use std::is_constructible instead of std::is_convertible. diff --git a/libstdc++-v3/include/profile/unordered_map b/libstdc++-v3/include/profile/unordered_map index 2f563a61b96..b8adc44108b 100644 --- a/libstdc++-v3/include/profile/unordered_map +++ b/libstdc++-v3/include/profile/unordered_map @@ -1,6 +1,6 @@ // Profiling unordered_map/unordered_multimap implementation -*- C++ -*- -// Copyright (C) 2009 Free Software Foundation, Inc. +// Copyright (C) 2009, 2010 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 @@ -72,8 +72,6 @@ namespace __profile typedef typename _Base::reference reference; typedef typename _Base::const_reference const_reference; typedef typename _Base::mapped_type mapped_type; - typedef std::pair pair_type; - typedef typename _Base::insert_return_type insert_return_type; typedef typename _Base::iterator iterator; typedef typename _Base::const_iterator const_iterator; @@ -148,7 +146,8 @@ namespace __profile ~unordered_map() { - __profcxx_hashtable_destruct(this, _Base::bucket_count(), _Base::size()); + __profcxx_hashtable_destruct(this, _Base::bucket_count(), + _Base::size()); _M_profile_destruct(); } @@ -162,7 +161,8 @@ namespace __profile void clear() { - __profcxx_hashtable_destruct(this, _Base::bucket_count(), _Base::size()); + __profcxx_hashtable_destruct(this, _Base::bucket_count(), + _Base::size()); _M_profile_destruct(); _Base::clear(); } @@ -175,14 +175,15 @@ namespace __profile _M_profile_resize(__old_size, _Base::bucket_count()); } - insert_return_type + std::pair insert(const value_type& __obj) { size_type __old_size = _Base::bucket_count(); - insert_return_type __res = _Base::insert(__obj); + std::pair __res = _Base::insert(__obj); _M_profile_resize(__old_size, _Base::bucket_count()); return __res; } + iterator insert(iterator __iter, const value_type& __v) { @@ -301,8 +302,6 @@ namespace __profile typedef typename _Base::difference_type difference_type; typedef typename _Base::reference reference; typedef typename _Base::const_reference const_reference; - typedef std::pair pair_type; - typedef typename _Base::insert_return_type insert_return_type; typedef typename _Base::iterator iterator; typedef typename _Base::const_iterator const_iterator; @@ -401,14 +400,15 @@ namespace __profile _M_profile_resize(__old_size, _Base::bucket_count()); } - insert_return_type + iterator insert(const value_type& __obj) { size_type __old_size = _Base::bucket_count(); - insert_return_type __res = _Base::insert(__obj); + iterator __res = _Base::insert(__obj); _M_profile_resize(__old_size, _Base::bucket_count()); return __res; } + iterator insert(iterator __iter, const value_type& __v) { diff --git a/libstdc++-v3/include/profile/unordered_set b/libstdc++-v3/include/profile/unordered_set index 6c2dd77cb5f..b350da0878e 100644 --- a/libstdc++-v3/include/profile/unordered_set +++ b/libstdc++-v3/include/profile/unordered_set @@ -1,6 +1,6 @@ // Profiling unordered_set/unordered_multiset implementation -*- C++ -*- -// Copyright (C) 2009 Free Software Foundation, Inc. +// Copyright (C) 2009, 2010 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 @@ -71,7 +71,6 @@ namespace __profile typedef typename _Base::difference_type difference_type; typedef typename _Base::reference reference; typedef typename _Base::const_reference const_reference; - typedef typename _Base::insert_return_type insert_return_type; typedef typename _Base::iterator iterator; typedef typename _Base::const_iterator const_iterator; @@ -165,6 +164,7 @@ namespace __profile _M_profile_destruct(); _Base::clear(); } + void insert(std::initializer_list __l) { @@ -172,13 +172,16 @@ namespace __profile _Base::insert(__l); _M_profile_resize(__old_size, _Base::bucket_count()); } - insert_return_type insert(const value_type& __obj) + + std::pair + insert(const value_type& __obj) { size_type __old_size = _Base::bucket_count(); - insert_return_type __res = _Base::insert(__obj); + std::pair __res = _Base::insert(__obj); _M_profile_resize(__old_size, _Base::bucket_count()); return __res; } + iterator insert(iterator __iter, const value_type& __v) { @@ -220,6 +223,7 @@ namespace __profile _Base::rehash(__n); _M_profile_resize(__old_size, _Base::bucket_count()); } + private: _Base& _M_base() { return *this; } @@ -285,7 +289,6 @@ namespace __profile typedef typename _Base::difference_type difference_type; typedef typename _Base::reference reference; typedef typename _Base::const_reference const_reference; - typedef typename _Base::insert_return_type insert_return_type; typedef typename _Base::iterator iterator; typedef typename _Base::const_iterator const_iterator; @@ -375,6 +378,7 @@ namespace __profile _M_profile_destruct(); _Base::clear(); } + void insert(std::initializer_list __l) { @@ -382,13 +386,16 @@ namespace __profile _Base::insert(__l); _M_profile_resize(__old_size, _Base::bucket_count()); } - insert_return_type insert(const value_type& __obj) + + iterator + insert(const value_type& __obj) { size_type __old_size = _Base::bucket_count(); - insert_return_type __res = _Base::insert(__obj); + iterator __res = _Base::insert(__obj); _M_profile_resize(__old_size, _Base::bucket_count()); return __res; } + iterator insert(iterator __iter, const value_type& __v) { @@ -430,6 +437,7 @@ namespace __profile _Base::rehash(__n); _M_profile_resize(__old_size, _Base::bucket_count()); } + private: _Base& _M_base() { return *this; } diff --git a/libstdc++-v3/include/tr1_impl/hashtable b/libstdc++-v3/include/tr1_impl/hashtable index c4776982334..f9ff933cad9 100644 --- a/libstdc++-v3/include/tr1_impl/hashtable +++ b/libstdc++-v3/include/tr1_impl/hashtable @@ -1,6 +1,6 @@ // Internal header for TR1 unordered_set and unordered_map -*- C++ -*- -// Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. +// Copyright (C) 2007, 2008, 2009, 2010 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 @@ -409,9 +409,6 @@ _GLIBCXX_BEGIN_NAMESPACE_TR1 _M_erase_node(_Node*, _Node**); public: - // Expose insert_return_type for profiling mode. - typedef _Insert_Return_Type insert_return_type; - // Insert and erase _Insert_Return_Type insert(const value_type& __v) -- 2.11.0