1 2 // Copyright (C) 2005-2016 Daniel James 3 // Distributed under the Boost Software License, Version 1.0. (See accompanying 4 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 5 6 #include <boost/unordered/unordered_set_fwd.hpp> 7 #include <boost/unordered/detail/equivalent.hpp> 8 #include <boost/unordered/detail/unique.hpp> 9 10 namespace boost { namespace unordered { namespace detail { 11 template <typename A, typename T, typename H, typename P> 12 struct set 13 { 14 typedef boost::unordered::detail::set<A, T, H, P> types; 15 16 typedef A allocator; 17 typedef T value_type; 18 typedef H hasher; 19 typedef P key_equal; 20 typedef T key_type; 21 22 typedef boost::unordered::detail::allocator_traits<allocator> traits; 23 typedef boost::unordered::detail::pick_node<allocator, value_type> pick; 24 typedef typename pick::node node; 25 typedef typename pick::bucket bucket; 26 typedef typename pick::link_pointer link_pointer; 27 28 typedef boost::unordered::detail::table_impl<types> table; 29 typedef boost::unordered::detail::set_extractor<value_type> extractor; 30 31 typedef typename boost::unordered::detail::pick_policy<T>::type policy; 32 }; 33 34 template <typename A, typename T, typename H, typename P> 35 struct multiset 36 { 37 typedef boost::unordered::detail::multiset<A, T, H, P> types; 38 39 typedef A allocator; 40 typedef T value_type; 41 typedef H hasher; 42 typedef P key_equal; 43 typedef T key_type; 44 45 typedef boost::unordered::detail::allocator_traits<allocator> traits; 46 typedef boost::unordered::detail::pick_grouped_node<allocator, 47 value_type> pick; 48 typedef typename pick::node node; 49 typedef typename pick::bucket bucket; 50 typedef typename pick::link_pointer link_pointer; 51 52 typedef boost::unordered::detail::grouped_table_impl<types> table; 53 typedef boost::unordered::detail::set_extractor<value_type> extractor; 54 55 typedef typename boost::unordered::detail::pick_policy<T>::type policy; 56 }; 57 }}} 58