1 ////////////////////////////////////////////////////////////////////////////// 2 // 3 // (C) Copyright Ion Gaztanaga 2005-2012. Distributed under the Boost 4 // Software License, Version 1.0. (See accompanying file 5 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 6 // 7 // See http://www.boost.org/libs/container for documentation. 8 // 9 ////////////////////////////////////////////////////////////////////////////// 10 11 #ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP 12 #define BOOST_CONTAINER_CONTAINER_FWD_HPP 13 14 #if (defined _MSC_VER) && (_MSC_VER >= 1200) 15 # pragma once 16 #endif 17 18 ////////////////////////////////////////////////////////////////////////////// 19 // Standard predeclarations 20 ////////////////////////////////////////////////////////////////////////////// 21 22 /// @cond 23 24 namespace boost{ 25 namespace intrusive{ 26 //Create namespace to avoid compilation errors 27 }} 28 29 namespace boost{ namespace container{ namespace container_detail{ 30 31 namespace bi = boost::intrusive; 32 33 }}} 34 35 #include <utility> 36 #include <memory> 37 #include <functional> 38 #include <iosfwd> 39 #include <string> 40 41 /// @endcond 42 43 ////////////////////////////////////////////////////////////////////////////// 44 // Containers 45 ////////////////////////////////////////////////////////////////////////////// 46 47 namespace boost { 48 namespace container { 49 50 //vector class 51 template <class T 52 ,class Allocator = std::allocator<T> > 53 class vector; 54 55 //vector class 56 template <class T 57 ,class Allocator = std::allocator<T> > 58 class stable_vector; 59 60 //vector class 61 template <class T 62 ,class Allocator = std::allocator<T> > 63 class deque; 64 65 //list class 66 template <class T 67 ,class Allocator = std::allocator<T> > 68 class list; 69 70 //slist class 71 template <class T 72 ,class Allocator = std::allocator<T> > 73 class slist; 74 75 //set class 76 template <class Key 77 ,class Compare = std::less<Key> 78 ,class Allocator = std::allocator<Key> > 79 class set; 80 81 //multiset class 82 template <class Key 83 ,class Compare = std::less<Key> 84 ,class Allocator = std::allocator<Key> > 85 class multiset; 86 87 //map class 88 template <class Key 89 ,class T 90 ,class Compare = std::less<Key> 91 ,class Allocator = std::allocator<std::pair<const Key, T> > > 92 class map; 93 94 //multimap class 95 template <class Key 96 ,class T 97 ,class Compare = std::less<Key> 98 ,class Allocator = std::allocator<std::pair<const Key, T> > > 99 class multimap; 100 101 //flat_set class 102 template <class Key 103 ,class Compare = std::less<Key> 104 ,class Allocator = std::allocator<Key> > 105 class flat_set; 106 107 //flat_multiset class 108 template <class Key 109 ,class Compare = std::less<Key> 110 ,class Allocator = std::allocator<Key> > 111 class flat_multiset; 112 113 //flat_map class 114 template <class Key 115 ,class T 116 ,class Compare = std::less<Key> 117 ,class Allocator = std::allocator<std::pair<Key, T> > > 118 class flat_map; 119 120 //flat_multimap class 121 template <class Key 122 ,class T 123 ,class Compare = std::less<Key> 124 ,class Allocator = std::allocator<std::pair<Key, T> > > 125 class flat_multimap; 126 127 //basic_string class 128 template <class CharT 129 ,class Traits = std::char_traits<CharT> 130 ,class Allocator = std::allocator<CharT> > 131 class basic_string; 132 133 //! Type used to tag that the input range is 134 //! guaranteed to be ordered 135 struct ordered_range_t 136 {}; 137 138 //! Type used to tag that the input range is 139 //! guaranteed to be ordered and unique 140 struct ordered_unique_range_t 141 : public ordered_range_t 142 {}; 143 144 //! Value used to tag that the input range is 145 //! guaranteed to be ordered 146 static const ordered_range_t ordered_range = ordered_range_t(); 147 148 //! Value used to tag that the input range is 149 //! guaranteed to be ordered and unique 150 static const ordered_unique_range_t ordered_unique_range = ordered_unique_range_t(); 151 152 /// @cond 153 154 namespace detail_really_deep_namespace { 155 156 //Otherwise, gcc issues a warning of previously defined 157 //anonymous_instance and unique_instance 158 struct dummy 159 { dummyboost::container::detail_really_deep_namespace::dummy160 dummy() 161 { 162 (void)ordered_range; 163 (void)ordered_unique_range; 164 } 165 }; 166 167 } //detail_really_deep_namespace { 168 169 /// @endcond 170 171 }} //namespace boost { namespace container { 172 173 #endif //#ifndef BOOST_CONTAINER_CONTAINER_FWD_HPP 174