////////////////////////////////////////////////////////////////////////////// | |
// | |
// (C) Copyright Ion Gaztanaga 2005-2009. 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) | |
// | |
// See http://www.boost.org/libs/container for documentation. | |
// | |
////////////////////////////////////////////////////////////////////////////// | |
#ifndef BOOST_CONTAINERS_CONTAINERS_FWD_HPP | |
#define BOOST_CONTAINERS_CONTAINERS_FWD_HPP | |
#if (defined _MSC_VER) && (_MSC_VER >= 1200) | |
# pragma once | |
#endif | |
////////////////////////////////////////////////////////////////////////////// | |
// Standard predeclarations | |
////////////////////////////////////////////////////////////////////////////// | |
/// @cond | |
namespace boost{ | |
namespace intrusive{ | |
//Create namespace to avoid compilation errors | |
}} | |
namespace boost{ namespace container{ namespace containers_detail{ | |
namespace bi = boost::intrusive; | |
}}} | |
namespace std { | |
template <class T> | |
class allocator; | |
template <class T> | |
struct less; | |
template <class T1, class T2> | |
struct pair; | |
template <class CharType> | |
struct char_traits; | |
} //namespace std { | |
/// @endcond | |
////////////////////////////////////////////////////////////////////////////// | |
// Containers | |
////////////////////////////////////////////////////////////////////////////// | |
namespace boost { | |
namespace container { | |
//vector class | |
template <class T | |
,class A = std::allocator<T> > | |
class vector; | |
//vector class | |
template <class T | |
,class A = std::allocator<T> > | |
class stable_vector; | |
//vector class | |
template <class T | |
,class A = std::allocator<T> > | |
class deque; | |
//list class | |
template <class T | |
,class A = std::allocator<T> > | |
class list; | |
//slist class | |
template <class T | |
,class Alloc = std::allocator<T> > | |
class slist; | |
//set class | |
template <class T | |
,class Pred = std::less<T> | |
,class Alloc = std::allocator<T> > | |
class set; | |
//multiset class | |
template <class T | |
,class Pred = std::less<T> | |
,class Alloc = std::allocator<T> > | |
class multiset; | |
//map class | |
template <class Key | |
,class T | |
,class Pred = std::less<Key> | |
,class Alloc = std::allocator<std::pair<const Key, T> > > | |
class map; | |
//multimap class | |
template <class Key | |
,class T | |
,class Pred = std::less<Key> | |
,class Alloc = std::allocator<std::pair<const Key, T> > > | |
class multimap; | |
//flat_set class | |
template <class T | |
,class Pred = std::less<T> | |
,class Alloc = std::allocator<T> > | |
class flat_set; | |
//flat_multiset class | |
template <class T | |
,class Pred = std::less<T> | |
,class Alloc = std::allocator<T> > | |
class flat_multiset; | |
//flat_map class | |
template <class Key | |
,class T | |
,class Pred = std::less<Key> | |
,class Alloc = std::allocator<std::pair<Key, T> > > | |
class flat_map; | |
//flat_multimap class | |
template <class Key | |
,class T | |
,class Pred = std::less<Key> | |
,class Alloc = std::allocator<std::pair<Key, T> > > | |
class flat_multimap; | |
//basic_string class | |
template <class CharT | |
,class Traits = std::char_traits<CharT> | |
,class Alloc = std::allocator<CharT> > | |
class basic_string; | |
//! Type used to tag that the input range is | |
//! guaranteed to be ordered | |
struct ordered_range_impl_t {}; | |
//! Type used to tag that the input range is | |
//! guaranteed to be ordered and unique | |
struct ordered_unique_range_impl_t{}; | |
/// @cond | |
typedef ordered_range_impl_t * ordered_range_t; | |
typedef ordered_unique_range_impl_t *ordered_unique_range_t; | |
/// @endcond | |
//! Value used to tag that the input range is | |
//! guaranteed to be ordered | |
static const ordered_range_t ordered_range = 0; | |
//! Value used to tag that the input range is | |
//! guaranteed to be ordered and unique | |
static const ordered_unique_range_t ordered_unique_range = 0; | |
/// @cond | |
namespace detail_really_deep_namespace { | |
//Otherwise, gcc issues a warning of previously defined | |
//anonymous_instance and unique_instance | |
struct dummy | |
{ | |
dummy() | |
{ | |
(void)ordered_range; | |
(void)ordered_unique_range; | |
} | |
}; | |
} //detail_really_deep_namespace { | |
/// @endcond | |
}} //namespace boost { namespace container { | |
#endif //#ifndef BOOST_CONTAINERS_CONTAINERS_FWD_HPP |