...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
namespace boost { namespace container { template<typename T, std::size_t NodesPerBlock = ADP_nodes_per_block, std::size_t MaxFreeBlocks = ADP_max_free_blocks, std::size_t OverheadPercent = ADP_overhead_percent> class adaptive_pool; template<typename T, std::size_t NodesPerBlock = ADP_nodes_per_block, std::size_t MaxFreeBlocks = ADP_max_free_blocks, std::size_t OverheadPercent = ADP_overhead_percent, unsigned Version = 2> class private_adaptive_pool; } }
namespace boost { namespace container { template<typename T, unsigned Version = 2, unsigned int AllocationDisableMask = 0> class allocator; } }
namespace boost { namespace container { template<typename Allocator> struct allocator_traits; } }
This header file forward declares the following containers:
boost::container::string
boost::container::wstring
Forward declares the following allocators:
Forward declares the following polymorphic resource classes:
And finally it defines the following types
namespace boost { namespace container { struct default_init_t; struct ordered_range_t; struct ordered_unique_range_t; static const ordered_range_t ordered_range; static const ordered_unique_range_t ordered_unique_range; static const default_init_t default_init; } }
namespace boost { namespace container { template<typename T, typename Allocator = void, typename Options = void> class deque; template<typename InputIterator> deque(InputIterator, InputIterator); template<typename InputIterator, typename Allocator> deque(InputIterator, InputIterator, Allocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename T> struct deque_of; typedef boost::container::deque< T, polymorphic_allocator< T > > deque; } } }
namespace boost { namespace container { template<typename T, typename A = void, typename Options = void> class devector; struct reserve_only_tag_t; } }
namespace boost { namespace container { namespace pmr { template<typename T, typename GrowthPolicy = growth_factor_60> struct devector_of; typedef boost::container::devector< T, GrowthPolicy, polymorphic_allocator< T > > devector; } } }
namespace boost { namespace container { template<typename Key, typename T, typename Compare = std::less<Key>, typename AllocatorOrContainer = new_allocator< std::pair< Key, T> > > class flat_map; template<typename Key, typename T, typename Compare = std::less<Key>, typename AllocatorOrContainer = new_allocator< std::pair< Key, T> > > class flat_multimap; template<typename InputIterator> flat_map(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_map(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_map(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> flat_map(ordered_unique_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_map(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_map(ordered_unique_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> flat_multimap(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_multimap(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_multimap(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> flat_multimap(ordered_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_multimap(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_multimap(ordered_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename Key, typename T, typename Compare = std::less<Key> > struct flat_map_of; template<typename Key, typename T, typename Compare = std::less<Key> > struct flat_multimap_of; typedef boost::container::flat_map< Key, T, Compare, polymorphic_allocator< std::pair< Key, T > > > flat_map; typedef boost::container::flat_multimap< Key, T, Compare, polymorphic_allocator< std::pair< Key, T > > > flat_multimap; } } }
namespace boost { namespace container { template<typename Key, typename Compare = std::less<Key>, typename AllocatorOrContainer = new_allocator<Key> > class flat_multiset; template<typename Key, typename Compare = std::less<Key>, typename AllocatorOrContainer = new_allocator<Key> > class flat_set; template<typename InputIterator> flat_set(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_set(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_set(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> flat_set(ordered_unique_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_set(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_set(ordered_unique_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> flat_multiset(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_multiset(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_multiset(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> flat_multiset(ordered_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> flat_multiset(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > flat_multiset(ordered_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename Key, typename Compare = std::less<Key> > struct flat_multiset_of; template<typename Key, typename Compare = std::less<Key> > struct flat_set_of; typedef boost::container::flat_set< Key, Compare, polymorphic_allocator< Key > > flat_set; typedef boost::container::flat_multiset< Key, Compare, polymorphic_allocator< Key > > flat_multiset; } } }
namespace boost { namespace container { template<typename T, typename Allocator = void> class list; template<typename InputIterator> list(InputIterator, InputIterator); template<typename InputIterator, typename ValueAllocator> list(InputIterator, InputIterator, ValueAllocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename T> struct list_of; typedef boost::container::list< T, polymorphic_allocator< T > > list; } } }
namespace boost { namespace container { template<typename Key, typename T, typename Compare = std::less<Key>, typename Allocator = void, typename Options = tree_assoc_defaults> class map; template<typename Key, typename T, typename Compare = std::less<Key>, typename Allocator = new_allocator< std::pair< const Key, T> >, typename Options = tree_assoc_defaults> class multimap; template<typename InputIterator> map(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> map(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > map(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> map(ordered_unique_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> map(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > map(ordered_unique_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> multimap(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> multimap(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > multimap(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> multimap(ordered_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> multimap(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > multimap(ordered_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename Key, typename T, typename Compare = std::less<Key>, typename Options = void> struct map_of; template<typename Key, typename T, typename Compare = std::less<Key>, typename Options = void> struct multimap_of; typedef boost::container::map< Key, T, Compare, polymorphic_allocator< std::pair< const Key, T > >, Options > map; typedef boost::container::multimap< Key, T, Compare, polymorphic_allocator< std::pair< const Key, T > >, Options > multimap; } } }
namespace boost { namespace container { template<typename T> class new_allocator; template<> class new_allocator<void>; } }
namespace boost { namespace container { template<typename T, std::size_t NodesPerBlock = NodeAlloc_nodes_per_block> class node_allocator; } }
namespace boost { namespace container { template<typename Iterator, typename NodeType> struct insert_return_type_base; template<typename NodeAllocator, typename KeyMapped = void> class node_handle; } }
namespace boost { namespace container { template<std::size_t BlockBytes> struct block_bytes; template<std::size_t BlockSize> struct block_size; template<bool Enabled> struct cache_begin; template<class ... Options> struct deque_options; template<class ... Options> struct devector_options; template<bool Enabled> struct fastmod_buckets; template<typename GrowthFactor> struct growth_factor; struct growth_factor_100; struct growth_factor_50; struct growth_factor_60; template<class ... Options> struct hash_assoc_options; template<std::size_t Alignment> struct inplace_alignment; template<bool Enabled> struct linear_buckets; template<bool Enabled> struct optimize_size; template<class ... Options> struct small_vector_options; template<class ... Options> struct static_vector_options; template<bool Enabled> struct store_hash; template<typename StoredSizeType> struct stored_size; template<bool ThrowOnOverflow> struct throw_on_overflow; template<class ... Options> struct tree_assoc_options; template<tree_type_enum TreeType> struct tree_type; template<class ... Options> struct vector_options; enum tree_type_enum; typedef typename boost::container::tree_assoc_options< Options... >::type tree_assoc_options_t; typedef typename boost::container::hash_assoc_options< Options... >::type hash_assoc_options_t; typedef typename boost::container::vector_options< Options... >::type vector_options_t; typedef typename boost::container::small_vector_options< Options... >::type small_vector_options_t; typedef typename boost::container::static_vector_options< Options... >::type static_vector_options_t; typedef typename boost::container::devector_options< Options... >::type devector_options_t; typedef typename boost::container::deque_options< Options... >::type deque_options_t; } }
namespace boost { namespace container { namespace pmr { memory_resource * new_delete_resource(); memory_resource * null_memory_resource(); memory_resource * set_default_resource(memory_resource *); memory_resource * get_default_resource(); } } }
namespace boost { namespace container { namespace pmr { class memory_resource; } } }
namespace boost { namespace container { namespace pmr { class monotonic_buffer_resource; } } }
namespace boost { namespace container { namespace pmr { template<typename T> class polymorphic_allocator; template<typename T1, typename T2> bool operator==(const polymorphic_allocator< T1 > &, const polymorphic_allocator< T2 > &); template<typename T1, typename T2> bool operator!=(const polymorphic_allocator< T1 > &, const polymorphic_allocator< T2 > &); } } }
namespace boost { namespace container { namespace pmr { struct pool_options; } } }
namespace boost { namespace container { namespace pmr { template<typename Allocator> class resource_adaptor_imp; typedef resource_adaptor_imp< typename allocator_traits< Allocator >::template rebind_alloc< char > > resource_adaptor; } namespace pmr_dtl { template<typename T> struct max_allocator_alignment; template<typename T> struct max_allocator_alignment<::boost::container::new_allocator< T >>; template<typename T> struct max_allocator_alignment<std::allocator< T >>; } } }
namespace boost { namespace container { namespace pmr { class synchronized_pool_resource; } } }
namespace boost { namespace container { namespace pmr { class unsynchronized_pool_resource; } } }
namespace boost { namespace container { template<typename OuterAlloc, typename ... InnerAllocs> class scoped_allocator_adaptor; template<typename OuterA1, typename OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNERCLASS > bool operator==(const scoped_allocator_adaptor< OuterA1, InnerAllocs... > & a, const scoped_allocator_adaptor< OuterA2, InnerAllocs... > & b); template<typename OuterA1, typename OuterA2, BOOST_CONTAINER_SCOPEDALLOC_ALLINNERCLASS > bool operator!=(const scoped_allocator_adaptor< OuterA1, InnerAllocs... > & a, const scoped_allocator_adaptor< OuterA2, InnerAllocs... > & b); } }
This header file forward declares boost::container::scoped_allocator_adaptor
namespace boost { namespace container { template<typename Key, typename Compare = std::less<Key>, typename Allocator = new_allocator<Key>, typename Options = tree_assoc_defaults> class multiset; template<typename Key, typename Compare = std::less<Key>, typename Allocator = new_allocator<Key>, typename Options = void> class set; template<typename InputIterator> set(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> set(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > set(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> set(ordered_unique_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> set(ordered_unique_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > set(ordered_unique_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> multiset(InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> multiset(InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > multiset(InputIterator, InputIterator, Compare const &, Allocator const &); template<typename InputIterator> multiset(ordered_range_t, InputIterator, InputIterator); template<typename InputIterator, typename AllocatorOrCompare> multiset(ordered_range_t, InputIterator, InputIterator, AllocatorOrCompare const &); template<typename InputIterator, typename Compare, typename Allocator, typename = dtl::require_nonallocator_t<Compare>, typename = dtl::require_allocator_t<Allocator> > multiset(ordered_range_t, InputIterator, InputIterator, Compare const &, Allocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename Key, typename Compare = std::less<Key>, typename Options = void> struct multiset_of; template<typename Key, typename Compare = std::less<Key>, typename Options = void> struct set_of; typedef boost::container::set< Key, Compare, polymorphic_allocator< Key >, Options > set; typedef boost::container::multiset< Key, Compare, polymorphic_allocator< Key >, Options > multiset; } } }
namespace boost { namespace container { template<typename T, typename Allocator = void> class slist; template<typename InpIt> slist(InpIt, InpIt); template<typename InpIt, typename Allocator> slist(InpIt, InpIt, Allocator const &); } }namespace std { template<typename T, typename ValueAllocator> class insert_iterator<boost::container::slist< T, ValueAllocator >>; }
namespace boost { namespace container { namespace pmr { template<typename T> struct slist_of; typedef boost::container::slist< T, polymorphic_allocator< T > > slist; } } }
namespace boost { namespace container { template<typename T, std::size_t N, typename Allocator = void, typename Options = void> class small_vector; template<typename T, typename VoidAlloc = void, typename Options = void> class small_vector_allocator; template<typename T, typename SecAlloc, typename Options> class small_vector_base; template<typename T, std::size_t N, std::size_t Alignment> struct small_vector_storage; template<typename T, std::size_t Alignment> struct small_vector_storage<T, 0u, Alignment>; namespace dtl { template<typename Options> struct get_small_vector_opt; template<> struct get_small_vector_opt<void>; template<typename Options> struct get_vopt_from_svopt; template<> struct get_vopt_from_svopt<void>; template<typename T, typename SecAlloc, typename Options> struct vector_for_small_vector; } } }
namespace boost { namespace container { namespace pmr { template<typename T, std::size_t N> struct small_vector_of; typedef boost::container::small_vector< T, N, polymorphic_allocator< T > > small_vector; } } }
namespace boost { namespace container { template<typename T, typename Allocator = void> class stable_vector; template<typename InputIterator> stable_vector(InputIterator, InputIterator); template<typename InputIterator, typename Allocator> stable_vector(InputIterator, InputIterator, Allocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename T> struct stable_vector_of; typedef boost::container::stable_vector< T, polymorphic_allocator< T > > stable_vector; } } }
namespace boost { namespace container { template<typename T, std::size_t Capacity, typename Options = void> class static_vector; template<typename V, std::size_t C1, std::size_t C2, typename O1, typename O2> bool operator==(static_vector< V, C1, O1 > const &, static_vector< V, C2, O2 > const &); template<typename V, std::size_t C1, std::size_t C2, typename O1, typename O2> bool operator!=(static_vector< V, C1, O1 > const &, static_vector< V, C2, O2 > const &); template<typename V, std::size_t C1, std::size_t C2, typename O1, typename O2> bool operator<(static_vector< V, C1, O1 > const &, static_vector< V, C2, O2 > const &); template<typename V, std::size_t C1, std::size_t C2, typename O1, typename O2> bool operator>(static_vector< V, C1, O1 > const &, static_vector< V, C2, O2 > const &); template<typename V, std::size_t C1, std::size_t C2, typename O1, typename O2> bool operator<=(static_vector< V, C1, O1 > const &, static_vector< V, C2, O2 > const &); template<typename V, std::size_t C1, std::size_t C2, typename O1, typename O2> bool operator>=(static_vector< V, C1, O1 > const &, static_vector< V, C2, O2 > const &); template<typename V, std::size_t C1, std::size_t C2, typename O1, typename O2> void swap(static_vector< V, C1, O1 > &, static_vector< V, C2, O2 > &); } }
namespace boost { namespace container { template<typename CharT, typename Traits = std::char_traits<CharT>, typename Allocator = void> class basic_string; typedef basic_string< char,std::char_traits< char >,new_allocator< char > > string; typedef basic_string< wchar_t,std::char_traits< wchar_t >,new_allocator< wchar_t > > wstring; template<typename InputIterator> basic_string(InputIterator, InputIterator); template<typename InputIterator, typename Allocator> basic_string(InputIterator, InputIterator, Allocator const &); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(const basic_string< CharT, Traits, Allocator > & x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(basic_string< CharT, Traits, Allocator > && x, basic_string< CharT, Traits, Allocator > && y); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(basic_string< CharT, Traits, Allocator > && x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(const basic_string< CharT, Traits, Allocator > & x, basic_string< CharT, Traits, Allocator > && y); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(const CharT * s, basic_string< CharT, Traits, Allocator > y); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(basic_string< CharT, Traits, Allocator > x, const CharT * s); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(CharT c, basic_string< CharT, Traits, Allocator > y); template<typename CharT, typename Traits, typename Allocator> basic_string< CharT, Traits, Allocator > operator+(basic_string< CharT, Traits, Allocator > x, const CharT c); template<typename CharT, typename Traits, typename Allocator> bool operator==(const basic_string< CharT, Traits, Allocator > & x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator==(const CharT * s, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator==(const basic_string< CharT, Traits, Allocator > & x, const CharT * s); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator==(BasicStringView< CharT, Traits > x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator==(const basic_string< CharT, Traits, Allocator > & x, BasicStringView< CharT, Traits > y); template<typename CharT, typename Traits, typename Allocator> bool operator!=(const basic_string< CharT, Traits, Allocator > & x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator!=(const CharT * s, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator!=(const basic_string< CharT, Traits, Allocator > & x, const CharT * s); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator!=(BasicStringView< CharT, Traits > x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator!=(const basic_string< CharT, Traits, Allocator > & x, BasicStringView< CharT, Traits > y); template<typename CharT, typename Traits, typename Allocator> bool operator<(const basic_string< CharT, Traits, Allocator > & x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator<(const CharT * s, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator<(const basic_string< CharT, Traits, Allocator > & x, const CharT * s); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator<(BasicStringView< CharT, Traits > x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator<(const basic_string< CharT, Traits, Allocator > & x, BasicStringView< CharT, Traits > y); template<typename CharT, typename Traits, typename Allocator> bool operator>(const basic_string< CharT, Traits, Allocator > & x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator>(const CharT * s, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator>(const basic_string< CharT, Traits, Allocator > & x, const CharT * s); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator>(BasicStringView< CharT, Traits > x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator>(const basic_string< CharT, Traits, Allocator > & x, BasicStringView< CharT, Traits > y); template<typename CharT, typename Traits, typename Allocator> bool operator<=(const basic_string< CharT, Traits, Allocator > & x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator<=(const CharT * s, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator<=(const basic_string< CharT, Traits, Allocator > & x, const CharT * s); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator<=(BasicStringView< CharT, Traits > x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator<=(const basic_string< CharT, Traits, Allocator > & x, BasicStringView< CharT, Traits > y); template<typename CharT, typename Traits, typename Allocator> bool operator>=(const basic_string< CharT, Traits, Allocator > & x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator>=(const CharT * s, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> bool operator>=(const basic_string< CharT, Traits, Allocator > & x, const CharT * s); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator>=(BasicStringView< CharT, Traits > x, const basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator, template< class, class > class BasicStringView> bool operator>=(const basic_string< CharT, Traits, Allocator > & x, BasicStringView< CharT, Traits > y); template<typename CharT, typename Traits, typename Allocator> void swap(basic_string< CharT, Traits, Allocator > & x, basic_string< CharT, Traits, Allocator > & y); template<typename CharT, typename Traits, typename Allocator> std::basic_ostream< CharT, Traits > & operator<<(std::basic_ostream< CharT, Traits > & os, const basic_string< CharT, Traits, Allocator > & s); template<typename CharT, typename Traits, typename Allocator> std::basic_istream< CharT, Traits > & operator>>(std::basic_istream< CharT, Traits > & is, basic_string< CharT, Traits, Allocator > & s); template<typename CharT, typename Traits, typename Allocator> std::basic_istream< CharT, Traits > & getline(std::istream & is, basic_string< CharT, Traits, Allocator > & s, CharT delim); template<typename CharT, typename Traits, typename Allocator> std::basic_istream< CharT, Traits > & getline(std::basic_istream< CharT, Traits > & is, basic_string< CharT, Traits, Allocator > & s); template<typename Ch, typename Allocator> std::size_t hash_value(basic_string< Ch, std::char_traits< Ch >, Allocator > const & v); } }
namespace boost { namespace container { namespace pmr { template<typename CharT, typename Traits = std::char_traits<CharT> > struct basic_string_of; typedef boost::container::basic_string< CharT, Traits, polymorphic_allocator< CharT > > basic_string; typedef basic_string_of< char >::type string; typedef basic_string_of< wchar_t >::type wstring; } } }
namespace boost { namespace container { class bad_alloc; class exception; class length_error; class logic_error; class out_of_range; class runtime_error; typedef bad_alloc bad_alloc_t; typedef out_of_range out_of_range_t; typedef length_error length_error_t; typedef logic_error logic_error_t; typedef runtime_error runtime_error_t; void throw_bad_alloc(); void throw_out_of_range(const char *); void throw_length_error(const char *); void throw_logic_error(const char *); void throw_runtime_error(const char *); } }
namespace boost { namespace container { template<typename T> struct constructible_with_allocator_prefix; template<typename T> struct constructible_with_allocator_suffix; template<typename T, typename Allocator> struct uses_allocator; } }
This header forward declares boost::container::constructible_with_allocator_prefix, boost::container::constructible_with_allocator_suffix and boost::container::uses_allocator. Also defines the following types:
namespace boost { namespace container { struct erased_type; typedef unspecified allocator_arg_t; static allocator_arg_t allocator_arg; } }
namespace boost { namespace container { template<typename T, typename A = void, typename Options = void> class vector; template<typename InputIterator> vector(InputIterator, InputIterator); template<typename InputIterator, typename Allocator> vector(InputIterator, InputIterator, Allocator const &); } }
namespace boost { namespace container { namespace pmr { template<typename T> struct vector_of; typedef boost::container::vector< T, polymorphic_allocator< T > > vector; } } }