8#ifndef INCLUDED_BSLALG_CONSTRUCTORPROXY
9#define INCLUDED_BSLALG_CONSTRUCTORPROXY
287#include <bslscm_version.h>
304#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
312template <
class OBJECT_TYPE>
class ConstructorProxy;
313template <class TYPE = bsl::polymorphic_allocator<>::value_type>
314class ConstructorProxy_PolymorphicAllocator;
315template <class TYPE, class AAMODEL = typename bslma::AAModel<TYPE>::type >
316struct ConstructorProxy_AllocatorType;
331 template <
class TYPE>
332 static TYPE&
unproxy(TYPE& obj);
333 template <
class TYPE>
335 template <
class TYPE>
336 static const TYPE&
unproxy(
const TYPE& obj);
337 template <
class TYPE>
340#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
341 template <
class TYPE>
342 static TYPE&&
unproxy(TYPE&& obj);
343 template <
class TYPE>
346 template <
class TYPE>
348 template <
class TYPE>
367template <
class OBJECT_TYPE>
423 template <
class ARG01>
426 template <
class ARG01>
439 template <
class ARG01,
class ARG02>
443 template <
class ARG01,
class ARG02,
class ARG03>
448 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04>
454 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
462 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
463 class ARG05,
class ARG06>
471 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
472 class ARG05,
class ARG06,
class ARG07>
481 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
482 class ARG05,
class ARG06,
class ARG07,
class ARG08>
492 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
493 class ARG05,
class ARG06,
class ARG07,
class ARG08,
505 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
506 class ARG05,
class ARG06,
class ARG07,
class ARG08,
507 class ARG09,
class ARG10>
519 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
520 class ARG05,
class ARG06,
class ARG07,
class ARG08,
521 class ARG09,
class ARG10,
class ARG11>
534 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
535 class ARG05,
class ARG06,
class ARG07,
class ARG08,
536 class ARG09,
class ARG10,
class ARG11,
class ARG12>
550 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
551 class ARG05,
class ARG06,
class ARG07,
class ARG08,
552 class ARG09,
class ARG10,
class ARG11,
class ARG12,
568 template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
569 class ARG05,
class ARG06,
class ARG07,
class ARG08,
570 class ARG09,
class ARG10,
class ARG11,
class ARG12,
571 class ARG13,
class ARG14>
614 : public
bsl::polymorphic_allocator<TYPE> {
659template <
class TYPE,
class AAMODEL>
723#ifdef BSLS_COMPILERFEATURES_SUPPORT_RVALUE_REFERENCES
766template <
class OBJECT_TYPE>
775template <
class OBJECT_TYPE>
782template <
class OBJECT_TYPE>
783template <
class ARG01>
794template <
class OBJECT_TYPE>
795template <
class ARG01>
808template <
class OBJECT_TYPE>
809template <
class ARG01,
class ARG02>
823template <
class OBJECT_TYPE>
824template <
class ARG01,
class ARG02,
class ARG03>
840template <
class OBJECT_TYPE>
841template <
class ARG01,
class ARG02,
class ARG03,
class ARG04>
859template <
class OBJECT_TYPE>
860template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
881template <
class OBJECT_TYPE>
882template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
883 class ARG05,
class ARG06>
905template <
class OBJECT_TYPE>
906template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
907 class ARG05,
class ARG06,
class ARG07>
931template <
class OBJECT_TYPE>
932template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
933 class ARG05,
class ARG06,
class ARG07,
class ARG08>
959template <
class OBJECT_TYPE>
960template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
961 class ARG05,
class ARG06,
class ARG07,
class ARG08,
990template <
class OBJECT_TYPE>
991template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
992 class ARG05,
class ARG06,
class ARG07,
class ARG08,
993 class ARG09,
class ARG10>
1023template <
class OBJECT_TYPE>
1024template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1025 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1026 class ARG09,
class ARG10,
class ARG11>
1058template <
class OBJECT_TYPE>
1059template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1060 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1061 class ARG09,
class ARG10,
class ARG11,
class ARG12>
1095template <
class OBJECT_TYPE>
1096template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1097 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1098 class ARG09,
class ARG10,
class ARG11,
class ARG12,
1135template <
class OBJECT_TYPE>
1136template <
class ARG01,
class ARG02,
class ARG03,
class ARG04,
1137 class ARG05,
class ARG06,
class ARG07,
class ARG08,
1138 class ARG09,
class ARG10,
class ARG11,
class ARG12,
1139 class ARG13,
class ARG14>
1177template <
class OBJECT_TYPE>
1181 bslma::DestructionUtil::destroy(d_objectBuffer.
address());
1185template <
class OBJECT_TYPE>
1189 return d_objectBuffer.
object();
1193template <
class OBJECT_TYPE>
1198 return d_objectBuffer.
object();
1209template <
class OBJECT_TYPE>
1216#ifndef BDE_OPENSOURCE_PUBLICATION
1221#ifdef bslalg_ConstructorProxy
1222#undef bslalg_ConstructorProxy
1225#define bslalg_ConstructorProxy bslalg::ConstructorProxy
Definition bslma_bslallocator.h:580
Definition bslma_memoryresource.h:441
Definition bslma_polymorphicallocator.h:452
Definition bslalg_constructorproxy.h:614
ConstructorProxy_PolymorphicAllocator(bsl::memory_resource *r=0)
Definition bslalg_constructorproxy.h:630
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:637
ConstructorProxy_PolymorphicAllocator(const ConstructorProxy_PolymorphicAllocator &)=default
Definition bslalg_constructorproxy.h:368
~ConstructorProxy()
Destroy this proxy and the object held by this proxy.
Definition bslalg_constructorproxy.h:1179
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:885
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:964
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:1141
ConstructorProxy_AllocatorType< OBJECT_TYPE >::type allocator_type
Definition bslalg_constructorproxy.h:399
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:826
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:843
OBJECT_TYPE & object() BSLS_KEYWORD_NOEXCEPT
Return a reference to the modifiable object held by this proxy.
Definition bslalg_constructorproxy.h:1187
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:995
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:797
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:1101
ConstructorProxy(BSLS_COMPILERFEATURES_FORWARD_REF(ARG01) a01, BSLS_COMPILERFEATURES_FORWARD_REF(ARG02) a02, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:811
ConstructorProxy(const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:777
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:863
ConstructorProxy(ARG01 &a01, const CtorAllocArgT &allocator)
Definition bslalg_constructorproxy.h:785
OBJECT_TYPE ValueType
Definition bslalg_constructorproxy.h:392
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:909
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:1028
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:1063
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:935
Definition bslmf_movableref.h:751
#define BSLS_COMPILERFEATURES_FORWARD_REF(T)
Definition bsls_compilerfeatures.h:2012
#define BSLS_COMPILERFEATURES_FORWARD(T, V)
Definition bsls_compilerfeatures.h:2018
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
#define BSLS_KEYWORD_DELETED
Definition bsls_keyword.h:609
#define BSLS_KEYWORD_NOEXCEPT
Definition bsls_keyword.h:632
Definition bdlb_printmethods.h:283
Definition bdlc_flathashmap.h:1805
Definition balxml_encoderoptions.h:68
Definition bdlbb_blob.h:576
bsl::allocator type
Definition bslalg_constructorproxy.h:674
bsl::allocator ArgType
Definition bslalg_constructorproxy.h:675
bsl::allocator ArgType
Definition bslalg_constructorproxy.h:685
bsl::allocator type
Definition bslalg_constructorproxy.h:684
Definition bslalg_constructorproxy.h:661
ConstructorProxy_PolymorphicAllocator ArgType
Definition bslalg_constructorproxy.h:665
bsl::polymorphic_allocator type
Definition bslalg_constructorproxy.h:664
Component-private utility class for implementation methods.
Definition bslalg_constructorproxy.h:323
static TYPE & unproxy(TYPE &obj)
Definition bslalg_constructorproxy.h:696
static void construct(TARGET_TYPE *address, const ALLOCATOR &allocator)
Definition bslma_constructionutil.h:1243
Definition bslma_isstdallocator.h:201
Definition bslma_usesbslmaallocator.h:343
Definition bslmf_isbitwisemoveable.h:718
static MovableRef< t_TYPE > move(t_TYPE &reference) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1060
static t_TYPE & access(t_TYPE &ref) BSLS_KEYWORD_NOEXCEPT
Definition bslmf_movableref.h:1032
Definition bsls_objectbuffer.h:276
TYPE * address()
Definition bsls_objectbuffer.h:334
TYPE & object()
Definition bsls_objectbuffer.h:351