8#ifndef INCLUDED_BSLMA_BSLALLOCATOR
9#define INCLUDED_BSLMA_BSLALLOCATOR
514#include <bslscm_version.h>
541#if BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
547# define COMPILING_BSLMA_BSLALLOCATOR_H
549# undef COMPILING_BSLMA_BSLALLOCATOR_H
554#define BSLMA_BSLALLOCATOR_DEPRECATE_ASSIGN \
555 BSLS_DEPRECATE_FEATURE("bsl", "bsl_allocator_assign", \
556 "Do not assign allocators.")
564struct BslAllocator_Voidish;
587template <class TYPE = polymorphic_allocator<>::value_type>
599 BloombergLP::bslmf::IsBitwiseCopyable);
601 BloombergLP::bslmf::IsBitwiseEqualityComparable);
622 template <
class ANY_TYPE>
647#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
660 template <
class ANY_TYPE>
712 template <
class ELEMENT_TYPE>
715#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
733 template <
class ELEMENT_TYPE,
class ARG1,
class... ARGS>
736 ARGS&&... arguments);
737 template <
class ELEMENT_TYPE,
class ARG1,
class... ARGS>
740 ARGS&&... arguments);
745 template <
class ELEMENT_TYPE>
783 :
public allocator<BloombergLP::bslma::BslAllocator_Voidish>
801 BloombergLP::bslmf::IsBitwiseCopyable);
803 BloombergLP::bslmf::IsBitwiseEqualityComparable);
838#ifdef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
843 template <
class ANY_TYPE>
878 typedef typename allocator_type::pointer
pointer;
885#ifdef BSLS_COMPILERFEATURES_SUPPORT_ALIAS_TEMPLATES
886 template <
class ELEMENT_TYPE>
889 template <
class ELEMENT_TYPE>
892 template <
class ELEMENT_TYPE>
902 template <
typename ARG>
909 template <
class ELEMENT_TYPE>
916 return m.allocate(n);
923 return m.allocate(n);
931 template <
class TYPE2>
938#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
939 template <
class TYPE2,
class ARG1,
class... ARGS>
950 template <
class TYPE2,
class ARG1,
class... ARGS>
962 template <
class ELEMENT_TYPE>
1000template <
class TYPE>
1003:
Base(BloombergLP::
bslma::Default::defaultAllocator())
1007template <
class TYPE>
1014#ifndef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
1016template <
class TYPE>
1024template <
class TYPE>
1025template <
class ANY_TYPE>
1034template <
class TYPE>
1040 "'bsl::allocator' objects cannot be assigned");
1052template <
class TYPE>
1057 return Base::allocate(n);
1060template <
class TYPE>
1064 Base::deallocate(p, n);
1067template <
class TYPE>
1068template <
class ELEMENT_TYPE>
1072 BloombergLP::bslma::ConstructionUtil::construct(address, *
this);
1075#if !BSLS_COMPILERFEATURES_SIMULATE_CPP11_FEATURES
1076template <
class TYPE>
1077template <
class ELEMENT_TYPE,
class ARG1,
class... ARGS>
1081 ARGS&&... arguments)
1083 BloombergLP::bslma::ConstructionUtil::construct(
1090template <
class TYPE>
1091template <
class ELEMENT_TYPE,
class ARG1,
class... ARGS>
1094 ELEMENT_TYPE *address,
1096 ARGS&&... arguments)
1098 BloombergLP::bslma::ConstructionUtil::construct(
1106template <
class TYPE>
1107template <
class ELEMENT_TYPE>
1111 BloombergLP::bslma::DestructionUtil::destroy(address);
1116template <
class TYPE>
1121 return BloombergLP::bsls::Util::addressOf(x);
1124template <
class TYPE>
1129 return BloombergLP::bsls::Util::addressOf(x);
1132template <
class TYPE>
1144template <
class TYPE>
1148 return static_cast<BloombergLP::bslma::Allocator *
>(this->resource());
1151template <
class TYPE>
1174#ifndef BSLS_COMPILERFEATURES_SUPPORT_DEFAULTED_FUNCTIONS
1183template <
class ANY_TYPE>
1199#if BSLS_PLATFORM_CMP_MSVC
1216template <
class TYPE>
1219 BloombergLP::bslma::Allocator *b)
1224template <
class TYPE>
1226bool operator==(BloombergLP::bslma::Allocator *a,
1232template <
class TYPE>
1235 BloombergLP::bslma::Allocator *b)
1240template <
class TYPE>
1242bool operator!=(BloombergLP::bslma::Allocator *a,
1258template <
class TYPE>
1264template <
class TYPE>
void * void_pointer
Definition bslma_bslallocator.h:808
const void * const_pointer
Definition bslma_bslallocator.h:807
BSLMF_NESTED_TRAIT_DECLARATION(allocator, BloombergLP::bslmf::IsBitwiseEqualityComparable)
allocator & operator=(const allocator &rhs)=default
Compiler-generated assign operator.
BSLMF_NESTED_TRAIT_DECLARATION(allocator, BloombergLP::bslmf::IsBitwiseCopyable)
const void * const_void_pointer
Definition bslma_bslallocator.h:809
void * pointer
Definition bslma_bslallocator.h:806
void value_type
Definition bslma_bslallocator.h:810
Definition bslma_bslallocator.h:588
value_type & reference
Definition bslma_bslallocator.h:605
BloombergLP::bslma::Allocator * mechanism() const
Definition bslma_bslallocator.h:1146
void destroy(ELEMENT_TYPE *address)
Definition bslma_bslallocator.h:1109
void construct(ELEMENT_TYPE *address, ARG1 &argument1, ARGS &&... arguments)
Definition bslma_bslallocator.h:1079
BaseTraits::const_pointer const_pointer
Definition bslma_bslallocator.h:610
BSLMF_NESTED_TRAIT_DECLARATION(allocator, BloombergLP::bslmf::IsBitwiseCopyable)
TYPE value_type
Definition bslma_bslallocator.h:604
allocator(const allocator &original) BSLS_KEYWORD_NOEXCEPT
Definition bslma_bslallocator.h:1018
value_type const & const_reference
Definition bslma_bslallocator.h:606
BaseTraits::pointer pointer
Definition bslma_bslallocator.h:609
BSLMA_BSLALLOCATOR_DEPRECATE_ASSIGN allocator & operator=(const allocator &rhs)
Definition bslma_bslallocator.h:1037
void deallocate(TYPE *p, std::size_t n=1)
Definition bslma_bslallocator.h:1062
allocator(BloombergLP::bslma::Allocator *mechanism)
Definition bslma_bslallocator.h:1009
void construct(ELEMENT_TYPE *address)
Definition bslma_bslallocator.h:1070
BSLS_ANNOTATION_NODISCARD pointer allocate(size_type n, const void *hint=0)
Definition bslma_bslallocator.h:1055
const_pointer address(const_reference x) const
Definition bslma_bslallocator.h:1127
BaseTraits::void_pointer void_pointer
Definition bslma_bslallocator.h:611
pointer address(reference x) const
Definition bslma_bslallocator.h:1119
void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1, ARGS &&... arguments)
Definition bslma_bslallocator.h:1093
allocator select_on_container_copy_construction() const
Return a default-constructed allocator.
Definition bslma_bslallocator.h:1153
BaseTraits::const_void_pointer const_void_pointer
Definition bslma_bslallocator.h:612
allocator(const allocator< ANY_TYPE > &original) BSLS_KEYWORD_NOEXCEPT
Definition bslma_bslallocator.h:1027
BaseTraits::difference_type difference_type
Definition bslma_bslallocator.h:608
BSLMF_NESTED_TRAIT_DECLARATION(allocator, BloombergLP::bslmf::IsBitwiseEqualityComparable)
BSLS_KEYWORD_CONSTEXPR size_type max_size() const
Definition bslma_bslallocator.h:1134
allocator()
Definition bslma_bslallocator.h:1002
BaseTraits::size_type size_type
Definition bslma_bslallocator.h:607
bool is_equal(const memory_resource &other) const BSLS_KEYWORD_NOEXCEPT
Definition bslma_memoryresource.h:563
Definition bslma_polymorphicallocator.h:460
memory_resource * resource() const
Return the address of the memory resource supplied on construction.
Definition bslma_polymorphicallocator.h:1074
#define BSLMA_BSLALLOCATOR_DEPRECATE_ASSIGN
Definition bslma_bslallocator.h:554
#define BSLS_ANNOTATION_NODISCARD
Definition bsls_annotation.h:368
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2343
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2349
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_KEYWORD_CONSTEXPR
Definition bsls_keyword.h:624
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:674
#define BSLS_REVIEW_OPT(X)
Definition bsls_review.h:1060
bool operator!=(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
bool operator==(const FileCleanerConfiguration &lhs, const FileCleanerConfiguration &rhs)
Definition bdlat_valuetypefunctions.h:939
ALLOCATOR const STRING_VIEW_LIKE_TYPE & rhs
Definition bslstl_string.h:3918
Definition baljsn_encoder_testtypes.h:76
Definition bslma_bslallocator.h:623
allocator< ANY_TYPE > other
Definition bslma_bslallocator.h:625
rebind_alloc(const ARG &allocatorArg)
Definition bslma_bslallocator.h:903
rebind_alloc()
Definition bslma_bslallocator.h:894
allocator_type::size_type size_type
Definition bslma_bslallocator.h:883
allocator_type::difference_type difference_type
Definition bslma_bslallocator.h:882
static void construct(allocator_type &m, TYPE2 *p, ARG1 &argument1, ARGS &&... arguments)
Definition bslma_bslallocator.h:940
allocator_type::void_pointer void_pointer
Definition bslma_bslallocator.h:880
allocator_type::const_void_pointer const_void_pointer
Definition bslma_bslallocator.h:881
static pointer allocate(allocator_type &m, size_type n, const_void_pointer)
Definition bslma_bslallocator.h:919
static allocator_type select_on_container_copy_construction(const allocator_type &)
Definition bslma_bslallocator.h:976
static void destroy(allocator_type &m, ELEMENT_TYPE *p)
Definition bslma_bslallocator.h:963
TYPE value_type
Definition bslma_bslallocator.h:876
false_type propagate_on_container_swap
Definition bslma_bslallocator.h:987
allocator_type::const_pointer const_pointer
Definition bslma_bslallocator.h:879
static void construct(allocator_type &m, TYPE2 *p, BSLS_COMPILERFEATURES_FORWARD_REF(ARG1) argument1, ARGS &&... arguments)
Definition bslma_bslallocator.h:951
static pointer allocate(allocator_type &m, size_type n)
Definition bslma_bslallocator.h:914
static void deallocate(allocator_type &m, pointer p, size_type n)
Definition bslma_bslallocator.h:926
false_type propagate_on_container_move_assignment
Definition bslma_bslallocator.h:985
static void construct(allocator_type &m, TYPE2 *p)
Definition bslma_bslallocator.h:932
false_type is_always_equal
Definition bslma_bslallocator.h:981
allocator_type::pointer pointer
Definition bslma_bslallocator.h:878
false_type propagate_on_container_copy_assignment
Definition bslma_bslallocator.h:983
static BSLS_KEYWORD_CONSTEXPR size_type max_size(const allocator_type &m)
Definition bslma_bslallocator.h:969
allocator< TYPE > allocator_type
Definition bslma_bslallocator.h:875
Definition bslma_allocatortraits.h:1089
BloombergLP::bslma::AllocatorTraits_ConstPointerType< ALLOCATOR_TYPE >::type const_pointer
Definition bslma_allocatortraits.h:1183
BloombergLP::bslma::AllocatorTraits_VoidPointerType< ALLOCATOR_TYPE >::type void_pointer
Definition bslma_allocatortraits.h:1186
BloombergLP::bslma::AllocatorTraits_SizeType< ALLOCATOR_TYPE >::type size_type
Definition bslma_allocatortraits.h:1196
BloombergLP::bslma::AllocatorTraits_PointerType< ALLOCATOR_TYPE >::type pointer
Definition bslma_allocatortraits.h:1180
ALLOCATOR_TYPE allocator_type
Definition bslma_allocatortraits.h:1175
BloombergLP::bslma::AllocatorTraits_ConstVoidPointerType< ALLOCATOR_TYPE >::type const_void_pointer
Definition bslma_allocatortraits.h:1189
BloombergLP::bslma::AllocatorTraits_DifferenceType< ALLOCATOR_TYPE >::type difference_type
Definition bslma_allocatortraits.h:1193
Definition bslmf_integralconstant.h:261
Definition bslma_isstdallocator.h:202
Definition bslma_usesbslmaallocator.h:344