unordered_map_fwd.hpp 3.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // Copyright (C) 2008-2011 Daniel James.
  2. // Copyright (C) 2022-2023 Christian Mazakas
  3. // Copyright (C) 2024 Braden Ganetsky
  4. // Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. #ifndef BOOST_UNORDERED_MAP_FWD_HPP_INCLUDED
  7. #define BOOST_UNORDERED_MAP_FWD_HPP_INCLUDED
  8. #include <boost/config.hpp>
  9. #if defined(BOOST_HAS_PRAGMA_ONCE)
  10. #pragma once
  11. #endif
  12. #include <boost/container_hash/hash_fwd.hpp>
  13. #include <functional>
  14. #include <memory>
  15. #ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
  16. #include <memory_resource>
  17. #endif
  18. namespace boost {
  19. namespace unordered {
  20. template <class K, class T, class H = boost::hash<K>,
  21. class P = std::equal_to<K>,
  22. class A = std::allocator<std::pair<const K, T> > >
  23. class unordered_map;
  24. template <class K, class T, class H, class P, class A>
  25. inline bool operator==(
  26. unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&);
  27. template <class K, class T, class H, class P, class A>
  28. inline bool operator!=(
  29. unordered_map<K, T, H, P, A> const&, unordered_map<K, T, H, P, A> const&);
  30. template <class K, class T, class H, class P, class A>
  31. inline void swap(unordered_map<K, T, H, P, A>& m1,
  32. unordered_map<K, T, H, P, A>& m2) noexcept(noexcept(m1.swap(m2)));
  33. template <class K, class T, class H, class P, class A, class Predicate>
  34. typename unordered_map<K, T, H, P, A>::size_type erase_if(
  35. unordered_map<K, T, H, P, A>& c, Predicate pred);
  36. template <class K, class T, class H = boost::hash<K>,
  37. class P = std::equal_to<K>,
  38. class A = std::allocator<std::pair<const K, T> > >
  39. class unordered_multimap;
  40. template <class K, class T, class H, class P, class A>
  41. inline bool operator==(unordered_multimap<K, T, H, P, A> const&,
  42. unordered_multimap<K, T, H, P, A> const&);
  43. template <class K, class T, class H, class P, class A>
  44. inline bool operator!=(unordered_multimap<K, T, H, P, A> const&,
  45. unordered_multimap<K, T, H, P, A> const&);
  46. template <class K, class T, class H, class P, class A>
  47. inline void swap(unordered_multimap<K, T, H, P, A>& m1,
  48. unordered_multimap<K, T, H, P, A>& m2) noexcept(noexcept(m1.swap(m2)));
  49. template <class K, class T, class H, class P, class A, class Predicate>
  50. typename unordered_multimap<K, T, H, P, A>::size_type erase_if(
  51. unordered_multimap<K, T, H, P, A>& c, Predicate pred);
  52. template <class N, class K, class T, class A> class node_handle_map;
  53. template <class Iter, class NodeType> struct insert_return_type_map;
  54. #ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
  55. namespace pmr {
  56. template <class K, class T, class H = boost::hash<K>,
  57. class P = std::equal_to<K> >
  58. using unordered_map = boost::unordered::unordered_map<K, T, H, P,
  59. std::pmr::polymorphic_allocator<std::pair<const K, T> > >;
  60. template <class K, class T, class H = boost::hash<K>,
  61. class P = std::equal_to<K> >
  62. using unordered_multimap = boost::unordered::unordered_multimap<K, T, H,
  63. P, std::pmr::polymorphic_allocator<std::pair<const K, T> > >;
  64. } // namespace pmr
  65. #endif
  66. } // namespace unordered
  67. using boost::unordered::unordered_map;
  68. using boost::unordered::unordered_multimap;
  69. } // namespace boost
  70. #endif