| 
									
										
										
										
											2016-08-14 20:55:40 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | // Copyright (C) 2005-2016 Daniel James
 | 
					
						
							| 
									
										
										
										
											2022-05-20 14:33:35 -07:00
										 |  |  | // Copyright (C) 2022 Christian Mazakas
 | 
					
						
							| 
									
										
										
										
											2016-08-14 20:55:40 +01:00
										 |  |  | // Distributed under the Boost Software License, Version 1.0. (See accompanying
 | 
					
						
							|  |  |  | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-19 13:05:17 +00:00
										 |  |  | #include <boost/unordered/detail/implementation.hpp>
 | 
					
						
							| 
									
										
										
										
											2017-02-19 13:05:17 +00:00
										 |  |  | #include <boost/unordered/unordered_set_fwd.hpp>
 | 
					
						
							| 
									
										
										
										
											2016-08-14 20:55:40 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-19 13:05:17 +00:00
										 |  |  | namespace boost { | 
					
						
							| 
									
										
										
										
											2017-06-11 20:55:59 +01:00
										 |  |  |   namespace unordered { | 
					
						
							|  |  |  |     namespace detail { | 
					
						
							|  |  |  |       template <typename A, typename T, typename H, typename P> struct set | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         typedef boost::unordered::detail::set<A, T, H, P> types; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         typedef T value_type; | 
					
						
							|  |  |  |         typedef H hasher; | 
					
						
							|  |  |  |         typedef P key_equal; | 
					
						
							|  |  |  |         typedef T const const_key_type; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-05 10:54:22 +01:00
										 |  |  |         typedef | 
					
						
							|  |  |  |           typename ::boost::unordered::detail::rebind_wrap<A, value_type>::type | 
					
						
							|  |  |  |             value_allocator; | 
					
						
							| 
									
										
										
										
											2017-06-11 20:55:59 +01:00
										 |  |  |         typedef boost::unordered::detail::allocator_traits<value_allocator> | 
					
						
							|  |  |  |           value_allocator_traits; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         typedef boost::unordered::detail::table<types> table; | 
					
						
							|  |  |  |         typedef boost::unordered::detail::set_extractor<value_type> extractor; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-20 14:33:35 -07:00
										 |  |  |         typedef typename boost::allocator_void_pointer<value_allocator>::type | 
					
						
							|  |  |  |           void_pointer; | 
					
						
							| 
									
										
										
										
											2017-06-11 20:55:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-20 14:33:35 -07:00
										 |  |  |         typedef boost::unordered::node_handle_set< | 
					
						
							|  |  |  |           node<value_type, void_pointer>, T, A> | 
					
						
							|  |  |  |           node_type; | 
					
						
							| 
									
										
										
										
											2017-06-11 20:55:59 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-20 14:33:35 -07:00
										 |  |  |         typedef typename table::c_iterator iterator; | 
					
						
							|  |  |  |         typedef boost::unordered::insert_return_type_set<iterator, node_type> | 
					
						
							| 
									
										
										
										
											2017-06-11 20:55:59 +01:00
										 |  |  |           insert_return_type; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       template <typename T, typename H, typename P, typename A> | 
					
						
							|  |  |  |       class instantiate_set | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         typedef boost::unordered_set<T, H, P, A> container; | 
					
						
							|  |  |  |         container x; | 
					
						
							|  |  |  |         typename container::node_type node_type; | 
					
						
							|  |  |  |         typename container::insert_return_type insert_return_type; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       template <typename T, typename H, typename P, typename A> | 
					
						
							|  |  |  |       class instantiate_multiset | 
					
						
							|  |  |  |       { | 
					
						
							|  |  |  |         typedef boost::unordered_multiset<T, H, P, A> container; | 
					
						
							|  |  |  |         container x; | 
					
						
							|  |  |  |         typename container::node_type node_type; | 
					
						
							|  |  |  |       }; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2017-02-19 13:05:17 +00:00
										 |  |  | } |