// bsltf_stdstatefulallocator_cpp03.h -*-C++-*- // Automatically generated file. **DO NOT EDIT** #ifndef INCLUDED_BSLTF_STDSTATEFULALLOCATOR_CPP03 #define INCLUDED_BSLTF_STDSTATEFULALLOCATOR_CPP03 //@PURPOSE: Provide C++03 implementation for bsltf_stdstatefulallocator.h // //@CLASSES: See bsltf_stdstatefulallocator.h for list of classes // //@SEE_ALSO: bsltf_stdstatefulallocator // //@DESCRIPTION: This component is the C++03 translation of a C++11 component, // generated by the 'sim_cpp11_features.pl' program. If the original header // contains any specially delimited regions of C++11 code, then this generated // file contains the C++03 equivalent, i.e., with variadic templates expanded // and rvalue-references replaced by 'bslmf::MovableRef' objects. The header // code in this file is designed to be '#include'd into the original header // when compiling with a C++03 compiler. If there are no specially delimited // regions of C++11 code, then this header contains no code and is not // '#include'd in the original header. // // Generated on Mon Aug 15 10:43:45 2022 // Command line: sim_cpp11_features.pl bsltf_stdstatefulallocator.h #ifdef COMPILING_BSLTF_STDSTATEFULALLOCATOR_H namespace BloombergLP { namespace bsltf { // ========================== // class StdStatefulAllocator // ========================== template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION = true, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT = true, bool PROPAGATE_ON_CONTAINER_SWAP = true, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT = true, bool IS_ALWAYS_EQUAL = false> class StdStatefulAllocator { // This allocator implements the minimal interface to comply with section // 17.6.3.5 ([allocator.requirements]) of the C++11 standard, while // maintaining a distinct object state - in this case a wrapped pointer to // a 'bslma::Allocator'. The template is configurable to control its // allocator propagation properties, but does not support the BDE "scoped" // allocator model, as scoped allocators should never propagate. Instances // of this allocator delegate their operations to the wrapped allocator // that constitutes its state. Note that while we define the various // traits used by the C++11 allocator traits facility, they actually mean // very little for this component, as it is the consumer of the allocator's // responsibility to check and apply the traits correctly, typically by // using 'bsl::allocator_traits' to perform all memory allocation tasks // rather than using the allocator directly. The // 'PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION' flag is consumed directly // though, in the static member function // 'select_on_container_copy_construction'. private: // DATA bslma::Allocator *d_allocator_p; // the wrapped allocator (held, not // owned) public: // PUBLIC TYPES typedef TYPE value_type; // For a minimal allocator, these should all be deducible for a C++11 // container implementation. Unfortunately, the C++03 implementation of // 'allocator_traits' supported by BDE does not try the leaps of template // metaprogramming necessary to deduce these types. That is left for a // future C++11 implementation, where language makes such metaprograms // much simpler to write. #if !defined(BSLSTL_ALLOCATOR_TRAITS_SUPPORTS_ALL_CPP11_DEDUCTIONS) typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; typedef TYPE *pointer; typedef const TYPE *const_pointer; #endif // TBD The following two 'typedef's are required for testing 'bslstl_deque' // and 'bslstl_vector' (because 'bslalg::ContainerBase', which is used by // both of those containers, expects these to exist). typedef TYPE& reference; typedef const TYPE& const_reference; typedef bsl::integral_constant<bool, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT> propagate_on_container_copy_assignment; typedef bsl::integral_constant<bool, PROPAGATE_ON_CONTAINER_SWAP> propagate_on_container_swap; typedef bsl::integral_constant<bool, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT> propagate_on_container_move_assignment; typedef bsl::integral_constant<bool, IS_ALWAYS_EQUAL> is_always_equal; template <class BDE_OTHER_TYPE> struct rebind { // This nested 'struct' template, parameterized by some // 'BDE_OTHER_TYPE', provides a namespace for an 'other' type alias, // which is an allocator type following the same template as this one // but that allocates elements of 'BDE_OTHER_TYPE'. Note that this // allocator type is convertible to and from 'other' for any // 'BDE_OTHER_TYPE' including 'void'. typedef StdStatefulAllocator< BDE_OTHER_TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL> other; }; // CREATORS explicit StdStatefulAllocator(bslma::Allocator *allocator = 0); // Create a 'StdStatefulAllocator' object wrapping the specified // 'allocator'. //! StdStatefulAllocator(const StdStatefulAllocator& original) = default; // Create an allocator having the same value as the specified // 'original' object. template <class BDE_OTHER_TYPE> StdStatefulAllocator(const StdStatefulAllocator< BDE_OTHER_TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& original); // Create a 'StdStatefulAllocator' object wrapping the same test // allocator as the specified 'original'. //! ~StdStatefulAllocator() = default; // Destroy this object. // MANIPULATORS //! StdStatefulAllocator& //! operator=(const StdStatefulAllocator& rhs) = default; // Assign to this object the value of the specified 'rhs' object, and // return a reference providing modifiable access to this object. TYPE *allocate(bslma::Allocator::size_type numElements); // Allocate enough (properly aligned) space for the specified // 'numElements' of the (template parameter) type 'TYPE'. #if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES // {{{ BEGIN GENERATED CODE // Command line: sim_cpp11_features.pl bsltf_stdstatefulallocator.h #ifndef BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT #define BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT 14 #endif #ifndef BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A #define BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT #endif #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 0 template <class ELEMENT_TYPE> void construct(ELEMENT_TYPE *address); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 0 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 1 template <class ELEMENT_TYPE, class Args_01> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 1 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 2 template <class ELEMENT_TYPE, class Args_01, class Args_02> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 2 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 3 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 3 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 4 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 4 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 5 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 5 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 6 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 6 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 7 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 7 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 8 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 8 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 9 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 9 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 10 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 10 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 11 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 11 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 12 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11, class Args_12> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11, BSLS_COMPILERFEATURES_FORWARD_REF(Args_12) arguments_12); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 12 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 13 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11, class Args_12, class Args_13> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11, BSLS_COMPILERFEATURES_FORWARD_REF(Args_12) arguments_12, BSLS_COMPILERFEATURES_FORWARD_REF(Args_13) arguments_13); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 13 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 14 template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11, class Args_12, class Args_13, class Args_14> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11, BSLS_COMPILERFEATURES_FORWARD_REF(Args_12) arguments_12, BSLS_COMPILERFEATURES_FORWARD_REF(Args_13) arguments_13, BSLS_COMPILERFEATURES_FORWARD_REF(Args_14) arguments_14); #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_A >= 14 #else // The generated code below is a workaround for the absence of perfect // forwarding in some compilers. template <class ELEMENT_TYPE, class... Args> void construct(ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args)... arguments); // }}} END GENERATED CODE #endif void deallocate(TYPE *address, bslma::Allocator::size_type numElements); // Return memory previously allocated at the specified 'address' for // 'numElements' back to this allocator. The 'numElements' argument is // ignored by this allocator type. The behavior is undefined unless // 'address' was allocated using this allocator object and has not // already been deallocated. template <class ELEMENT_TYPE> void destroy(ELEMENT_TYPE *address); // Invoke the 'ELEMENT_TYPE' destructor for the object at the specified // 'address'. // ACCESSORS #if !defined(BSLSTL_ALLOCATOR_TRAITS_SUPPORTS_ALL_CPP11_DEDUCTIONS) size_type max_size() const; // Return the maximum number of elements of type 'TYPE' that can be // allocated using this allocator in a single call to the 'allocate' // method. Note that there is no guarantee that attempts at allocating // less elements than the value returned by 'max_size' will not throw. // *** DO NOT RELY ON THE CONTINUING PRESENT OF THIS METHOD *** THIS // METHOD WILL BE REMOVED ONCE 'bslstl::allocator_traits' PROPERLY // DEDUCES AN IMPLEMENTATION FOR THIS FUNCTION WHEN NOT SUPPLIED BY THE // ALLOCATOR DIRECTLY. #endif StdStatefulAllocator select_on_container_copy_construction() const; // Return a copy of this object if the 'bool' template parameter // 'PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION' is true, and a copy of a // 'StdStatefulAllocator' object wrapping the default allocator // otherwise. bslma::Allocator *allocator() const; // Return the address of the allocator wrapped by this object. }; // FREE OPERATORS template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> bool operator==(const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& lhs, const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& rhs); // Return 'true' if the specified 'lhs' and 'rhs' have the same underlying // test allocator, and 'false' otherwise. template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> bool operator!=(const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& lhs, const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& rhs); // Return 'true' if the specified 'lhs' and 'rhs' have different underlying // test allocators, and 'false' otherwise. // ============================================================================ // INLINE DEFINITIONS // ============================================================================ // -------------------------- // class StdStatefulAllocator // -------------------------- // CREATORS template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>:: StdStatefulAllocator(bslma::Allocator *allocator) : d_allocator_p(bslma::Default::allocator(allocator)) { } template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class BDE_OTHER_TYPE> inline StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>:: StdStatefulAllocator(const StdStatefulAllocator< BDE_OTHER_TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& original) : d_allocator_p(original.allocator()) { } // MANIPULATORS template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline TYPE * StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::allocate( bslma::Allocator::size_type numElements) { return static_cast<TYPE *>(d_allocator_p->allocate( bslma::Allocator::size_type(numElements * sizeof(TYPE)))); } #if BSLS_COMPILERFEATURES_SIMULATE_VARIADIC_TEMPLATES // {{{ BEGIN GENERATED CODE // Command line: sim_cpp11_features.pl bsltf_stdstatefulallocator.h #ifndef BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT #define BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT 14 #endif #ifndef BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B #define BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT #endif #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 0 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( ); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 0 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 1 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 1 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 2 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 2 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 3 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 3 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 4 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 4 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 5 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 5 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 6 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 6 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 7 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 7 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 8 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07), BSLS_COMPILERFEATURES_FORWARD(Args_08,arguments_08)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 8 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 9 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07), BSLS_COMPILERFEATURES_FORWARD(Args_08,arguments_08), BSLS_COMPILERFEATURES_FORWARD(Args_09,arguments_09)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 9 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 10 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07), BSLS_COMPILERFEATURES_FORWARD(Args_08,arguments_08), BSLS_COMPILERFEATURES_FORWARD(Args_09,arguments_09), BSLS_COMPILERFEATURES_FORWARD(Args_10,arguments_10)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 10 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 11 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07), BSLS_COMPILERFEATURES_FORWARD(Args_08,arguments_08), BSLS_COMPILERFEATURES_FORWARD(Args_09,arguments_09), BSLS_COMPILERFEATURES_FORWARD(Args_10,arguments_10), BSLS_COMPILERFEATURES_FORWARD(Args_11,arguments_11)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 11 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 12 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11, class Args_12> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11, BSLS_COMPILERFEATURES_FORWARD_REF(Args_12) arguments_12) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07), BSLS_COMPILERFEATURES_FORWARD(Args_08,arguments_08), BSLS_COMPILERFEATURES_FORWARD(Args_09,arguments_09), BSLS_COMPILERFEATURES_FORWARD(Args_10,arguments_10), BSLS_COMPILERFEATURES_FORWARD(Args_11,arguments_11), BSLS_COMPILERFEATURES_FORWARD(Args_12,arguments_12)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 12 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 13 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11, class Args_12, class Args_13> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11, BSLS_COMPILERFEATURES_FORWARD_REF(Args_12) arguments_12, BSLS_COMPILERFEATURES_FORWARD_REF(Args_13) arguments_13) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07), BSLS_COMPILERFEATURES_FORWARD(Args_08,arguments_08), BSLS_COMPILERFEATURES_FORWARD(Args_09,arguments_09), BSLS_COMPILERFEATURES_FORWARD(Args_10,arguments_10), BSLS_COMPILERFEATURES_FORWARD(Args_11,arguments_11), BSLS_COMPILERFEATURES_FORWARD(Args_12,arguments_12), BSLS_COMPILERFEATURES_FORWARD(Args_13,arguments_13)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 13 #if BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 14 template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class Args_01, class Args_02, class Args_03, class Args_04, class Args_05, class Args_06, class Args_07, class Args_08, class Args_09, class Args_10, class Args_11, class Args_12, class Args_13, class Args_14> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args_01) arguments_01, BSLS_COMPILERFEATURES_FORWARD_REF(Args_02) arguments_02, BSLS_COMPILERFEATURES_FORWARD_REF(Args_03) arguments_03, BSLS_COMPILERFEATURES_FORWARD_REF(Args_04) arguments_04, BSLS_COMPILERFEATURES_FORWARD_REF(Args_05) arguments_05, BSLS_COMPILERFEATURES_FORWARD_REF(Args_06) arguments_06, BSLS_COMPILERFEATURES_FORWARD_REF(Args_07) arguments_07, BSLS_COMPILERFEATURES_FORWARD_REF(Args_08) arguments_08, BSLS_COMPILERFEATURES_FORWARD_REF(Args_09) arguments_09, BSLS_COMPILERFEATURES_FORWARD_REF(Args_10) arguments_10, BSLS_COMPILERFEATURES_FORWARD_REF(Args_11) arguments_11, BSLS_COMPILERFEATURES_FORWARD_REF(Args_12) arguments_12, BSLS_COMPILERFEATURES_FORWARD_REF(Args_13) arguments_13, BSLS_COMPILERFEATURES_FORWARD_REF(Args_14) arguments_14) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args_01,arguments_01), BSLS_COMPILERFEATURES_FORWARD(Args_02,arguments_02), BSLS_COMPILERFEATURES_FORWARD(Args_03,arguments_03), BSLS_COMPILERFEATURES_FORWARD(Args_04,arguments_04), BSLS_COMPILERFEATURES_FORWARD(Args_05,arguments_05), BSLS_COMPILERFEATURES_FORWARD(Args_06,arguments_06), BSLS_COMPILERFEATURES_FORWARD(Args_07,arguments_07), BSLS_COMPILERFEATURES_FORWARD(Args_08,arguments_08), BSLS_COMPILERFEATURES_FORWARD(Args_09,arguments_09), BSLS_COMPILERFEATURES_FORWARD(Args_10,arguments_10), BSLS_COMPILERFEATURES_FORWARD(Args_11,arguments_11), BSLS_COMPILERFEATURES_FORWARD(Args_12,arguments_12), BSLS_COMPILERFEATURES_FORWARD(Args_13,arguments_13), BSLS_COMPILERFEATURES_FORWARD(Args_14,arguments_14)); } #endif // BSLTF_STDSTATEFULALLOCATOR_VARIADIC_LIMIT_B >= 14 #else // The generated code below is a workaround for the absence of perfect // forwarding in some compilers. template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE, class... Args> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::construct( ELEMENT_TYPE *address, BSLS_COMPILERFEATURES_FORWARD_REF(Args)... arguments) { ::new (static_cast<void*>(address)) ELEMENT_TYPE( BSLS_COMPILERFEATURES_FORWARD(Args,arguments)...); } // }}} END GENERATED CODE #endif template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>:: deallocate(TYPE *address, bslma::Allocator::size_type) { d_allocator_p->deallocate(address); } template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> template <class ELEMENT_TYPE> inline void StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::destroy( ELEMENT_TYPE * address) { address->~ELEMENT_TYPE(); } template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline typename StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>::size_type StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>:: max_size() const { // Return the largest value, 'v', such that 'v * sizeof(T)' fits in a // 'size_type' (copied from bslstl_allocator). // We will calculate MAX_NUM_BYTES based on our knowledge that // 'bslma::Allocator::size_type' is just an alias for 'std::size_t'. First // demonstrate that is true: BSLMF_ASSERT((bsl::is_same<BloombergLP::bslma::Allocator::size_type, std::size_t>::value)); static const std::size_t MAX_NUM_BYTES = ~std::size_t(0); static const std::size_t MAX_NUM_ELEMENTS = std::size_t(MAX_NUM_BYTES) / sizeof(TYPE); return MAX_NUM_ELEMENTS; } template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL> StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>:: select_on_container_copy_construction() const { if (PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION) { return *this; // RETURN } // else return StdStatefulAllocator(bslma::Default::defaultAllocator()); } template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline bslma::Allocator * StdStatefulAllocator<TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>:: allocator() const { return d_allocator_p; } } // close package namespace // FREE OPERATORS template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline bool bsltf::operator==(const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& lhs, const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& rhs) { return IS_ALWAYS_EQUAL || (lhs.allocator() == rhs.allocator()); } template <class TYPE, bool PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, bool PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, bool PROPAGATE_ON_CONTAINER_SWAP, bool PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, bool IS_ALWAYS_EQUAL> inline bool bsltf::operator!=(const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& lhs, const StdStatefulAllocator< TYPE, PROPAGATE_ON_CONTAINER_COPY_CONSTRUCTION, PROPAGATE_ON_CONTAINER_COPY_ASSIGNMENT, PROPAGATE_ON_CONTAINER_SWAP, PROPAGATE_ON_CONTAINER_MOVE_ASSIGNMENT, IS_ALWAYS_EQUAL>& rhs) { return !IS_ALWAYS_EQUAL && (lhs.allocator() != rhs.allocator()); } } // close enterprise namespace #else // if ! defined(DEFINED_BSLTF_STDSTATEFULALLOCATOR_H) # error Not valid except when included from bsltf_stdstatefulallocator.h #endif // ! defined(COMPILING_BSLTF_STDSTATEFULALLOCATOR_H) #endif // ! defined(INCLUDED_BSLTF_STDSTATEFULALLOCATOR_CPP03) // ---------------------------------------------------------------------------- // Copyright 2022 Bloomberg Finance L.P. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ----------------------------- END-OF-FILE ----------------------------------