From 2507fd78e3a464a116f2306acd39df59a299ade2 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 30 Nov 2011 08:21:04 +0000 Subject: [PATCH] Unordered: Move rebind into 'types' classes. Makes the types in error messages a tad bit nicer. [SVN r75742] --- include/boost/unordered/detail/equivalent.hpp | 28 ++++++++++--------- include/boost/unordered/detail/unique.hpp | 28 ++++++++++--------- include/boost/unordered/unordered_map.hpp | 24 ++++------------ include/boost/unordered/unordered_set.hpp | 24 ++++------------ 4 files changed, 42 insertions(+), 62 deletions(-) diff --git a/include/boost/unordered/detail/equivalent.hpp b/include/boost/unordered/detail/equivalent.hpp index 82141368..57ddbec9 100644 --- a/include/boost/unordered/detail/equivalent.hpp +++ b/include/boost/unordered/detail/equivalent.hpp @@ -115,20 +115,21 @@ namespace boost { namespace unordered { namespace detail { typedef typename pick::link_pointer link_pointer; }; - template + template struct multiset { - typedef boost::unordered::detail::multiset types; + typedef boost::unordered::detail::multiset types; - typedef A allocator; + typedef T value_type; typedef H hasher; typedef P key_equal; + typedef T key_type; - typedef boost::unordered::detail::allocator_traits traits; - typedef typename traits::value_type value_type; - typedef value_type key_type; + typedef typename boost::unordered::detail::rebind_wrap< + A, value_type>::type allocator; - typedef boost::unordered::detail::pick_grouped_node pick; + typedef boost::unordered::detail::allocator_traits traits; + typedef boost::unordered::detail::pick_grouped_node pick; typedef typename pick::node node; typedef typename pick::bucket bucket; typedef typename pick::link_pointer link_pointer; @@ -137,20 +138,21 @@ namespace boost { namespace unordered { namespace detail { typedef boost::unordered::detail::set_extractor extractor; }; - template + template struct multimap { - typedef boost::unordered::detail::multimap types; + typedef boost::unordered::detail::multimap types; - typedef A allocator; + typedef std::pair value_type; typedef H hasher; typedef P key_equal; typedef K key_type; - typedef boost::unordered::detail::allocator_traits traits; - typedef typename traits::value_type value_type; + typedef typename boost::unordered::detail::rebind_wrap< + A, value_type>::type allocator; - typedef boost::unordered::detail::pick_grouped_node pick; + typedef boost::unordered::detail::allocator_traits traits; + typedef boost::unordered::detail::pick_grouped_node pick; typedef typename pick::node node; typedef typename pick::bucket bucket; typedef typename pick::link_pointer link_pointer; diff --git a/include/boost/unordered/detail/unique.hpp b/include/boost/unordered/detail/unique.hpp index 717efd39..58740fe9 100644 --- a/include/boost/unordered/detail/unique.hpp +++ b/include/boost/unordered/detail/unique.hpp @@ -111,20 +111,21 @@ namespace boost { namespace unordered { namespace detail { typedef typename pick::link_pointer link_pointer; }; - template + template struct set { - typedef boost::unordered::detail::set types; + typedef boost::unordered::detail::set types; - typedef A allocator; + typedef T value_type; typedef H hasher; typedef P key_equal; + typedef T key_type; - typedef boost::unordered::detail::allocator_traits traits; - typedef typename traits::value_type value_type; - typedef value_type key_type; + typedef typename boost::unordered::detail::rebind_wrap< + A, value_type>::type allocator; - typedef boost::unordered::detail::pick_node pick; + typedef boost::unordered::detail::allocator_traits traits; + typedef boost::unordered::detail::pick_node pick; typedef typename pick::node node; typedef typename pick::bucket bucket; typedef typename pick::link_pointer link_pointer; @@ -133,20 +134,21 @@ namespace boost { namespace unordered { namespace detail { typedef boost::unordered::detail::set_extractor extractor; }; - template + template struct map { - typedef boost::unordered::detail::map types; + typedef boost::unordered::detail::map types; - typedef A allocator; + typedef std::pair value_type; typedef H hasher; typedef P key_equal; typedef K key_type; - typedef boost::unordered::detail::allocator_traits traits; - typedef typename traits::value_type value_type; + typedef typename boost::unordered::detail::rebind_wrap< + A, value_type>::type allocator; - typedef boost::unordered::detail::pick_node pick; + typedef boost::unordered::detail::allocator_traits traits; + typedef boost::unordered::detail::pick_node pick; typedef typename pick::node node; typedef typename pick::bucket bucket; typedef typename pick::link_pointer link_pointer; diff --git a/include/boost/unordered/unordered_map.hpp b/include/boost/unordered/unordered_map.hpp index f12c84b1..857901f4 100644 --- a/include/boost/unordered/unordered_map.hpp +++ b/include/boost/unordered/unordered_map.hpp @@ -54,15 +54,9 @@ namespace unordered private: - typedef typename boost::unordered::detail::rebind_wrap< - allocator_type, value_type>::type - value_allocator; - - typedef boost::unordered::detail::allocator_traits - allocator_traits; - - typedef boost::unordered::detail::map - types; + typedef boost::unordered::detail::map types; + typedef typename types::allocator value_allocator; + typedef typename types::traits allocator_traits; typedef typename types::table table; public: @@ -446,15 +440,9 @@ namespace unordered private: - typedef typename boost::unordered::detail::rebind_wrap< - allocator_type, value_type>::type - value_allocator; - - typedef boost::unordered::detail::allocator_traits - allocator_traits; - - typedef boost::unordered::detail::multimap - types; + typedef boost::unordered::detail::multimap types; + typedef typename types::allocator value_allocator; + typedef typename types::traits allocator_traits; typedef typename types::table table; public: diff --git a/include/boost/unordered/unordered_set.hpp b/include/boost/unordered/unordered_set.hpp index 227610bf..43c269d8 100644 --- a/include/boost/unordered/unordered_set.hpp +++ b/include/boost/unordered/unordered_set.hpp @@ -52,15 +52,9 @@ namespace unordered private: - typedef typename boost::unordered::detail::rebind_wrap< - allocator_type, value_type>::type - value_allocator; - - typedef boost::unordered::detail::allocator_traits - allocator_traits; - - typedef boost::unordered::detail::set - types; + typedef boost::unordered::detail::set types; + typedef typename types::allocator value_allocator; + typedef typename types::traits allocator_traits; typedef typename types::table table; public: @@ -429,15 +423,9 @@ namespace unordered private: - typedef typename boost::unordered::detail::rebind_wrap< - allocator_type, value_type>::type - value_allocator; - - typedef boost::unordered::detail::allocator_traits - allocator_traits; - - typedef boost::unordered::detail::multiset - types; + typedef boost::unordered::detail::multiset types; + typedef typename types::allocator value_allocator; + typedef typename types::traits allocator_traits; typedef typename types::table table; public: