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