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