1 
2 // Copyright (C) 2008-2011 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 #ifndef BOOST_UNORDERED_MAP_FWD_HPP_INCLUDED
7 #define BOOST_UNORDERED_MAP_FWD_HPP_INCLUDED
8 
9 #include <boost/config.hpp>
10 #if defined(BOOST_HAS_PRAGMA_ONCE)
11 #pragma once
12 #endif
13 
14 #include <boost/functional/hash_fwd.hpp>
15 #include <boost/unordered/detail/fwd.hpp>
16 #include <functional>
17 #include <memory>
18 
19 namespace boost {
20   namespace unordered {
21     template <class K, class T, class H = boost::hash<K>,
22       class P = std::equal_to<K>,
23       class A = std::allocator<std::pair<const K, T> > >
24     class unordered_map;
25 
26     template <class K, class T, class H, class P, class A>
27     inline bool operator==(
28       unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&);
29     template <class K, class T, class H, class P, class A>
30     inline bool operator!=(
31       unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&);
32     template <class K, class T, class H, class P, class A>
33     inline void swap(
34       unordered_map<K, T, H, P, A>& m1, unordered_map<K, T, H, P, A>& m2)
35       BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)));
36 
37     template <class K, class T, class H = boost::hash<K>,
38       class P = std::equal_to<K>,
39       class A = std::allocator<std::pair<const K, T> > >
40     class unordered_multimap;
41 
42     template <class K, class T, class H, class P, class A>
43     inline bool operator==(unordered_multimap<K, T, H, P, A> const&,
44       unordered_multimap<K, T, H, P, A> const&);
45     template <class K, class T, class H, class P, class A>
46     inline bool operator!=(unordered_multimap<K, T, H, P, A> const&,
47       unordered_multimap<K, T, H, P, A> const&);
48     template <class K, class T, class H, class P, class A>
49     inline void swap(unordered_multimap<K, T, H, P, A>& m1,
50       unordered_multimap<K, T, H, P, A>& m2)
51       BOOST_NOEXCEPT_IF(BOOST_NOEXCEPT_EXPR(m1.swap(m2)));
52 
53     template <class N, class K, class T, class A> class node_handle_map;
54     template <class N, class K, class T, class A> struct insert_return_type_map;
55   }
56 
57   using boost::unordered::unordered_map;
58   using boost::unordered::unordered_multimap;
59   using boost::unordered::swap;
60   using boost::unordered::operator==;
61   using boost::unordered::operator!=;
62 }
63 
64 #endif
65