8#ifndef INCLUDED_BSLALG_CONSTRUCTORPROXY
9#define INCLUDED_BSLALG_CONSTRUCTORPROXY
287#include <bslscm_version.h>
305#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
317template <
class OBJECT_TYPE>
class ConstructorProxy;
318template <class TYPE = bsl::polymorphic_allocator<>::value_type>
319class ConstructorProxy_PolymorphicAllocator;
320template <class TYPE, class AAMODEL = typename bslma::AAModel<TYPE>::type >
321struct ConstructorProxy_AllocatorType;
339 template <
class TYPE>
340 static TYPE&
unproxy(TYPE& obj);
341 template <
class TYPE>
343 template <
class TYPE>
344 static const TYPE&
unproxy(
const TYPE& obj);
345 template <
class TYPE>
348#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
349 template <
class TYPE>
350 static TYPE&&
unproxy(TYPE&& obj);
351 template <
class TYPE>
354 template <
class TYPE>
356 template <
class TYPE>
375template <
class OBJECT_TYPE>
432 template <
class ARG01>
435 template <
class ARG01>
449 template <
class ARG01,
class ARG02>
453 template <
class ARG01,
class ARG02,
class ARG03>
458 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04>
464 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
472 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
473 class ARG05,
class ARG06>
481 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
482 class ARG05,
class ARG06,
class ARG07>
491 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
492 class ARG05,
class ARG06,
class ARG07,
class ARG08>
502 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
503 class ARG05,
class ARG06,
class ARG07,
class ARG08,
515 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
516 class ARG05,
class ARG06,
class ARG07,
class ARG08,
517 class ARG09,
class ARG10>
529 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
530 class ARG05,
class ARG06,
class ARG07,
class ARG08,
531 class ARG09,
class ARG10,
class ARG11>
544 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
545 class ARG05,
class ARG06,
class ARG07,
class ARG08,
546 class ARG09,
class ARG10,
class ARG11,
class ARG12>
560 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
561 class ARG05,
class ARG06,
class ARG07,
class ARG08,
562 class ARG09,
class ARG10,
class ARG11,
class ARG12,
578 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
579 class ARG05,
class ARG06,
class ARG07,
class ARG08,
580 class ARG09,
class ARG10,
class ARG11,
class ARG12,
581 class ARG13,
class ARG14>
624 : public
bsl::polymorphic_allocator<TYPE> {
669template <
class TYPE,
class AAMODEL>
733#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
776template <
class OBJECT_TYPE>
785template <
class OBJECT_TYPE>
792template <
class OBJECT_TYPE>
793template <
class ARG01>
804template <
class OBJECT_TYPE>
805template <
class ARG01>
818template <
class OBJECT_TYPE>
819template <
class ARG01,
class ARG02>
833template <
class OBJECT_TYPE>
834template <
class ARG01,
class ARG02,
class ARG03>
850template <
class OBJECT_TYPE>
851template <
class ARG01,
class ARG02,
class ARG03,
class ARG04>
869template <
class OBJECT_TYPE>
870template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
891template <
class OBJECT_TYPE>
892template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
893 class ARG05,
class ARG06>
915template <
class OBJECT_TYPE>
916template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
917 class ARG05,
class ARG06,
class ARG07>
941template <
class OBJECT_TYPE>
942template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
943 class ARG05,
class ARG06,
class ARG07,
class ARG08>
969template <
class OBJECT_TYPE>
970template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
971 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1000template <
class OBJECT_TYPE>
1001template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1002 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1003 class ARG09,
class ARG10>
1033template <
class OBJECT_TYPE>
1034template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1035 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1036 class ARG09,
class ARG10,
class ARG11>
1068template <
class OBJECT_TYPE>
1069template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1070 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1071 class ARG09,
class ARG10,
class ARG11,
class ARG12>
1105template <
class OBJECT_TYPE>
1106template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1107 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1108 class ARG09,
class ARG10,
class ARG11,
class ARG12,
1145template <
class OBJECT_TYPE>
1146template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1147 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1148 class ARG09,
class ARG10,
class ARG11,
class ARG12,
1149 class ARG13,
class ARG14>
1187template <
class OBJECT_TYPE>
1191 bslma::DestructionUtil::destroy(d_objectBuffer.
address());
1195template <
class OBJECT_TYPE>
1199 return d_objectBuffer.
object();
1203template <
class OBJECT_TYPE>
1208 return d_objectBuffer.
object();
1219template <
class OBJECT_TYPE>
1226#ifndef BDE_OPENSOURCE_PUBLICATION
1231#ifdef bslalg_ConstructorProxy
1232#undef bslalg_ConstructorProxy
1235#define bslalg_ConstructorProxy bslalg::ConstructorProxy
Definition bslma_bslallocator.h:588
Definition bslma_memoryresource.h:443
Definition bslma_polymorphicallocator.h:460
Definition bslalg_constructorproxy.h:624
ConstructorProxy_PolymorphicAllocator(bsl::memory_resource *r=0)
Definition bslalg_constructorproxy.h:640
BSLMF_NESTED_TRAIT_DECLARATION_IF(ConstructorProxy_PolymorphicAllocator, bslma::UsesBslmaAllocator, false)
~ConstructorProxy_PolymorphicAllocator()
BSLMF_NESTED_TRAIT_DECLARATION(ConstructorProxy_PolymorphicAllocator, bslma::IsStdAllocator)
ConstructorProxy_PolymorphicAllocator(const bsl::polymorphic_allocator< T2 > &other)
Definition bslalg_constructorproxy.h:647
ConstructorProxy_PolymorphicAllocator(const ConstructorProxy_PolymorphicAllocator &)=default
Definition bslalg_constructorproxy.h:376
~ConstructorProxy()
Destroy this proxy and the object held by this proxy.
Definition bslalg_constructorproxy.h:1189
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:895
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, BSLS_COMPILERFEATURES_FORWARD_REF(ARG08) a08, BSLS_COMPILERFEATURES_FORWARD_REF(ARG09) a09, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:974
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, BSLS_COMPILERFEATURES_FORWARD_REF(ARG08) a08, BSLS_COMPILERFEATURES_FORWARD_REF(ARG09) a09, BSLS_COMPILERFEATURES_FORWARD_REF(ARG10) a10, BSLS_COMPILERFEATURES_FORWARD_REF(ARG11) a11, BSLS_COMPILERFEATURES_FORWARD_REF(ARG12) a12, BSLS_COMPILERFEATURES_FORWARD_REF(ARG13) a13, BSLS_COMPILERFEATURES_FORWARD_REF(ARG14) a14, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:1151
ConstructorProxy_AllocatorType< OBJECT_TYPE >::type allocator_type
Definition bslalg_constructorproxy.h:407
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:836
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:853
OBJECT_TYPE & object() BSLS_KEYWORD_NOEXCEPT
Return a reference to the modifiable object held by this proxy.
Definition bslalg_constructorproxy.h:1197
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, BSLS_COMPILERFEATURES_FORWARD_REF(ARG08) a08, BSLS_COMPILERFEATURES_FORWARD_REF(ARG09) a09, BSLS_COMPILERFEATURES_FORWARD_REF(ARG10) a10, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:1005
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:807
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, BSLS_COMPILERFEATURES_FORWARD_REF(ARG08) a08, BSLS_COMPILERFEATURES_FORWARD_REF(ARG09) a09, BSLS_COMPILERFEATURES_FORWARD_REF(ARG10) a10, BSLS_COMPILERFEATURES_FORWARD_REF(ARG11) a11, BSLS_COMPILERFEATURES_FORWARD_REF(ARG12) a12, BSLS_COMPILERFEATURES_FORWARD_REF(ARG13) a13, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:1111
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:821
ConstructorProxy(const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:787
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:873
ConstructorProxy(ARG01 &a01, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:795
OBJECT_TYPE ValueType
Definition bslalg_constructorproxy.h:400
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:919
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, BSLS_COMPILERFEATURES_FORWARD_REF(ARG08) a08, BSLS_COMPILERFEATURES_FORWARD_REF(ARG09) a09, BSLS_COMPILERFEATURES_FORWARD_REF(ARG10) a10, BSLS_COMPILERFEATURES_FORWARD_REF(ARG11) a11, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:1038
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, BSLS_COMPILERFEATURES_FORWARD_REF(ARG08) a08, BSLS_COMPILERFEATURES_FORWARD_REF(ARG09) a09, BSLS_COMPILERFEATURES_FORWARD_REF(ARG10) a10, BSLS_COMPILERFEATURES_FORWARD_REF(ARG11) a11, BSLS_COMPILERFEATURES_FORWARD_REF(ARG12) a12, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:1073
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, BSLS_COMPILERFEATURES_FORWARD_REF(ARG03) a03, BSLS_COMPILERFEATURES_FORWARD_REF(ARG04) a04, BSLS_COMPILERFEATURES_FORWARD_REF(ARG05) a05, BSLS_COMPILERFEATURES_FORWARD_REF(ARG06) a06, BSLS_COMPILERFEATURES_FORWARD_REF(ARG07) a07, BSLS_COMPILERFEATURES_FORWARD_REF(ARG08) a08, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:945
Definition bslmf_movableref.h:752
#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_DELETED
Definition bsls_keyword.h:651
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:674
Definition bdlat_valuetypefunctions.h:939
Definition bdlc_flathashmap.h:2218
Definition baljsn_encoder_testtypes.h:76
Definition bdlbb_blob.h:579
bsl::allocator type
Definition bslalg_constructorproxy.h:684
bsl::allocator ArgType
Definition bslalg_constructorproxy.h:685
bsl::allocator ArgType
Definition bslalg_constructorproxy.h:695
bsl::allocator type
Definition bslalg_constructorproxy.h:694
Definition bslalg_constructorproxy.h:671
ConstructorProxy_PolymorphicAllocator ArgType
Definition bslalg_constructorproxy.h:675
bsl::polymorphic_allocator type
Definition bslalg_constructorproxy.h:674
Definition bslalg_constructorproxy.h:330
static TYPE & unproxy(TYPE &obj)
Definition bslalg_constructorproxy.h:706
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1244
Definition bslma_isstdallocator.h:202
Definition bslma_usesbslmaallocator.h:344
Definition bslmf_isbitwisemoveable.h:718
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1067
static t_TYPE & access(t_TYPE &ref) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1039
Definition bsls_objectbuffer.h:277
TYPE * address()
Definition bsls_objectbuffer.h:335
TYPE & object()
Definition bsls_objectbuffer.h:352