BDE 4.39.x Production Release
Loading...
Searching...
No Matches
bslstl::Variant_Base< t_HEAD, t_TAIL > Struct Template Reference

#include <bslstl_variant.h>

Inheritance diagram for bslstl::Variant_Base< t_HEAD, t_TAIL >:

Detailed Description

template<class t_HEAD, class... t_TAIL>
struct bslstl::Variant_Base< t_HEAD, t_TAIL >

This component-private struct defines the data representation of bsl::variant and contains the implementations of its special member functions (which must be defaulted in bsl::variant itself). This class also contains implementations of additional constructors and methods needed for the correct functionality of the variant class hierarchy.

Classes

struct  NoAlloc
 

Public Types

typedef BloombergLP::bslmf::MovableRefUtil MoveUtil
 
typedef BloombergLP::bslstl::Variant_AllocatorBase< BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny< t_HEAD, t_TAIL... >::value > AllocBase
 
typedef BloombergLP::bslstl::Variant_Union< t_HEAD, t_TAIL... > Variant_Union
 
typedef bsl::variant< t_HEAD, t_TAIL... > Variant
 
typedef bsl::conditional< BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny< t_HEAD, t_TAIL... >::value, bsl::allocator< char >, NoAlloc >::type allocator_type
 

Public Member Functions

 BSLMF_NESTED_TRAIT_DECLARATION_IF (Variant_Base, BloombergLP::bslma::UsesBslmaAllocator,(BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny< t_HEAD, t_TAIL... >::value))
 
 BSLMF_NESTED_TRAIT_DECLARATION_IF (Variant_Base, BloombergLP::bslmf::UsesAllocatorArgT,(BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny< t_HEAD, t_TAIL... >::value))
 
 BSLMF_NESTED_TRAIT_DECLARATION_IF (Variant_Base, BloombergLP::bslmf::IsBitwiseMoveable,(BloombergLP::bslstl::Variant_IsBitwiseMoveableAll< t_HEAD, t_TAIL... >::value))
 
 Variant_Base ()
 
 Variant_Base (const Variant &original)
 
 Variant_Base (BloombergLP::bslmf::MovableRef< Variant > original)
 
template<size_t t_INDEX>
 Variant_Base (bsl::in_place_index_t< t_INDEX >)
 
template<size_t t_INDEX, class t_ARG_01 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08, const t_ARG_09 &arg_09)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 , class t_ARG_10 >
 Variant_Base (bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08, const t_ARG_09 &arg_09, const t_ARG_10 &arg_10)
 
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator)
 
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, const Variant &original)
 
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, BloombergLP::bslmf::MovableRef< Variant > original)
 
template<size_t t_INDEX>
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >)
 
template<size_t t_INDEX, class t_ARG_01 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08, const t_ARG_09 &arg_09)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 , class t_ARG_10 >
 Variant_Base (bsl::allocator_arg_t, allocator_type allocator, bsl::in_place_index_t< t_INDEX >, const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08, const t_ARG_09 &arg_09, const t_ARG_10 &arg_10)
 
 ~Variant_Base ()
 
template<size_t t_INDEX>
void baseEmplace ()
 
template<size_t t_INDEX, class t_ARG_01 >
void baseEmplace (const t_ARG_01 &arg_01)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08, const t_ARG_09 &arg_09)
 
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 , class t_ARG_10 >
void baseEmplace (const t_ARG_01 &arg_01, const t_ARG_02 &arg_02, const t_ARG_03 &arg_03, const t_ARG_04 &arg_04, const t_ARG_05 &arg_05, const t_ARG_06 &arg_06, const t_ARG_07 &arg_07, const t_ARG_08 &arg_08, const t_ARG_09 &arg_09, const t_ARG_10 &arg_10)
 
Variant_Baseoperator= (const Variant_Base &rhs)
 
Variant_Baseoperator= (BloombergLP::bslmf::MovableRef< Variant_Base > rhs)
 
void reset () BSLS_KEYWORD_NOEXCEPT
 

Public Attributes

size_t d_type
 
Variant_Union d_union
 

Member Typedef Documentation

◆ allocator_type

template<class t_HEAD , class... t_TAIL>
typedef bsl::conditional<BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny<t_HEAD,t_TAIL...>::value,bsl::allocator<char>,NoAlloc>::type bslstl::Variant_Base< t_HEAD, t_TAIL >::allocator_type

Type alias to the allocator type used by variant.

◆ AllocBase

template<class t_HEAD , class... t_TAIL>
typedef BloombergLP::bslstl::Variant_AllocatorBase< BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny<t_HEAD, t_TAIL...>::value> bslstl::Variant_Base< t_HEAD, t_TAIL >::AllocBase

◆ MoveUtil

template<class t_HEAD , class... t_TAIL>
typedef BloombergLP::bslmf::MovableRefUtil bslstl::Variant_Base< t_HEAD, t_TAIL >::MoveUtil

◆ Variant

template<class t_HEAD , class... t_TAIL>
typedef bsl::variant<t_HEAD, t_TAIL...> bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant

◆ Variant_Union

template<class t_HEAD , class... t_TAIL>
typedef BloombergLP::bslstl::Variant_Union<t_HEAD, t_TAIL...> bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Union

Constructor & Destructor Documentation

◆ Variant_Base() [1/28]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( )
inline

Create a Variant_Base object holding the 0th alternative, which is value-initialized. If this Variant_Base is allocator-aware, the currently installed default constructor is used to supply memory.

◆ Variant_Base() [2/28]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( const Variant original)
inline

Create a Variant_Base object holding the same alternative (if any) as the specified original object. If this Variant_Base is allocator-aware, the currently installed default allocator is used to supply memory. If the original object is not valueless by exception, the contained value is copy-constructed from the contained value of original. All alternatives shall be copy constructible.

◆ Variant_Base() [3/28]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( BloombergLP::bslmf::MovableRef< Variant original)
inline

Create a Variant_Base object holding the same alternative (if any) held by the specified original. If this Variant_Base is allocator-aware, the allocator of original is used to supply memory. If the original object is not valueless by exception, the contained value is move-constructed from the contained value of original. All alternatives shall be move constructible.

◆ Variant_Base() [4/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  )
inlineexplicit

Create a Variant_Base object holding the alternative with index (template parameter) t_INDEX, which is value-initialized. If this Variant_Base is allocator-aware, the currently installed default constructor is used to supply memory.

◆ Variant_Base() [5/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01 
)
inlineexplicit

Create a Variant_Base object holding the alternative with index (template parameter) t_INDEX, which is direct-initialized from the specified arg. If this Variant_Base is allocator-aware, the currently installed default constructor is used to supply memory.

◆ Variant_Base() [6/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02 
)
inlineexplicit

◆ Variant_Base() [7/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03 
)
inlineexplicit

◆ Variant_Base() [8/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04 
)
inlineexplicit

◆ Variant_Base() [9/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05 
)
inlineexplicit

◆ Variant_Base() [10/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06 
)
inlineexplicit

◆ Variant_Base() [11/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07 
)
inlineexplicit

◆ Variant_Base() [12/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08 
)
inlineexplicit

◆ Variant_Base() [13/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08,
const t_ARG_09 &  arg_09 
)
inlineexplicit

◆ Variant_Base() [14/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 , class t_ARG_10 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08,
const t_ARG_09 &  arg_09,
const t_ARG_10 &  arg_10 
)
inlineexplicit

◆ Variant_Base() [15/28]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator 
)
inline

Create a Variant_Base object holding the 0th alternative, which is value-initialized. If this Variant_Base is allocator-aware, the specified allocator is used to supply memory.

◆ Variant_Base() [16/28]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
const Variant original 
)
inline

Create a Variant_Base object holding the same alternative (if any) held by the specified original object. If this Variant_Base is allocator-aware, the specified allocator is used to supply memory. If the original object is not valueless by exception, the contained value is copy/move constructed from the contained value of original. All alternatives shall be copy/move constructible.

◆ Variant_Base() [17/28]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
BloombergLP::bslmf::MovableRef< Variant original 
)
inline

◆ Variant_Base() [18/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX>
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >   
)
inlineexplicit

Create a Variant_Base object holding the alternative with index (template parameter) t_INDEX, which is value-initialized. If this Variant_Base is allocator-aware, the specified allocator is used to supply memory.

◆ Variant_Base() [19/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01 
)
inlineexplicit

Create a Variant_Base object holding the alternative with index (template parameter) t_INDEX, direct-initialized from arg. If this Variant_Base is allocator-aware, the specified allocator is used to supply memory.

◆ Variant_Base() [20/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02 
)
inlineexplicit

◆ Variant_Base() [21/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03 
)
inlineexplicit

◆ Variant_Base() [22/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04 
)
inlineexplicit

◆ Variant_Base() [23/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05 
)
inlineexplicit

◆ Variant_Base() [24/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06 
)
inlineexplicit

◆ Variant_Base() [25/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07 
)
inlineexplicit

◆ Variant_Base() [26/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08 
)
inlineexplicit

◆ Variant_Base() [27/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08,
const t_ARG_09 &  arg_09 
)
inlineexplicit

◆ Variant_Base() [28/28]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 , class t_ARG_10 >
bslstl::Variant_Base< t_HEAD, t_TAIL >::Variant_Base ( bsl::allocator_arg_t  ,
allocator_type  allocator,
bsl::in_place_index_t< t_INDEX >  ,
const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08,
const t_ARG_09 &  arg_09,
const t_ARG_10 &  arg_10 
)
inlineexplicit

◆ ~Variant_Base()

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::~Variant_Base ( )

Destroy this object. The contained value, if any, is destroyed.

Member Function Documentation

◆ baseEmplace() [1/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX>
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( )

Create the alternative with index (template parameter) t_INDEX in place, which is value-initialized. If this Variant_Base object already holds a value, that contained value is destroyed before the new object is created. If the alternative is allocator-aware, it uses the allocator specified upon the construction of this Variant_Base object to supply memory; passing an allocator argument to this method results in two allocators being passed to the alternative constructor, resulting in a likely compilation error.

Note
Note that if the constructor of the alternative exits via an exception, this object is left in the valueless by exception state.

◆ baseEmplace() [2/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01)

Create the alternative with index (template parameter) t_INDEX in place, direct-initialized from the specified arg. If this Variant_Base object already holds a value, that contained value is destroyed before the new object is created. If the alternative is allocator-aware, it uses the allocator specified upon the construction of this Variant_Base object to supply memory; passing an allocator argument to this method results in two allocators being passed to the alternative constructor, resulting in a likely compilation error.

Note
Note that if the constructor of the alternative exits via an exception, this object is left in the valueless by exception state.

◆ baseEmplace() [3/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02 
)

◆ baseEmplace() [4/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03 
)

◆ baseEmplace() [5/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04 
)

◆ baseEmplace() [6/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05 
)

◆ baseEmplace() [7/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06 
)

◆ baseEmplace() [8/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07 
)

◆ baseEmplace() [9/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08 
)

◆ baseEmplace() [10/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08,
const t_ARG_09 &  arg_09 
)

◆ baseEmplace() [11/11]

template<class t_HEAD , class... t_TAIL>
template<size_t t_INDEX, class t_ARG_01 , class t_ARG_02 , class t_ARG_03 , class t_ARG_04 , class t_ARG_05 , class t_ARG_06 , class t_ARG_07 , class t_ARG_08 , class t_ARG_09 , class t_ARG_10 >
void bslstl::Variant_Base< t_HEAD, t_TAIL >::baseEmplace ( const t_ARG_01 &  arg_01,
const t_ARG_02 &  arg_02,
const t_ARG_03 &  arg_03,
const t_ARG_04 &  arg_04,
const t_ARG_05 &  arg_05,
const t_ARG_06 &  arg_06,
const t_ARG_07 &  arg_07,
const t_ARG_08 &  arg_08,
const t_ARG_09 &  arg_09,
const t_ARG_10 &  arg_10 
)

◆ BSLMF_NESTED_TRAIT_DECLARATION_IF() [1/3]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::BSLMF_NESTED_TRAIT_DECLARATION_IF ( Variant_Base< t_HEAD, t_TAIL >  ,
BloombergLP::bslma::UsesBslmaAllocator  ,
(BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny< t_HEAD, t_TAIL... >::value)   
)

◆ BSLMF_NESTED_TRAIT_DECLARATION_IF() [2/3]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::BSLMF_NESTED_TRAIT_DECLARATION_IF ( Variant_Base< t_HEAD, t_TAIL >  ,
BloombergLP::bslmf::IsBitwiseMoveable  ,
(BloombergLP::bslstl::Variant_IsBitwiseMoveableAll< t_HEAD, t_TAIL... >::value)   
)

◆ BSLMF_NESTED_TRAIT_DECLARATION_IF() [3/3]

template<class t_HEAD , class... t_TAIL>
bslstl::Variant_Base< t_HEAD, t_TAIL >::BSLMF_NESTED_TRAIT_DECLARATION_IF ( Variant_Base< t_HEAD, t_TAIL >  ,
BloombergLP::bslmf::UsesAllocatorArgT  ,
(BloombergLP::bslstl::Variant_UsesBslmaAllocatorAny< t_HEAD, t_TAIL... >::value)   
)

◆ operator=() [1/2]

template<class t_HEAD , class... t_TAIL>
Variant_Base< t_HEAD, t_TAIL... > & bslstl::Variant_Base< t_HEAD, t_TAIL >::operator= ( BloombergLP::bslmf::MovableRef< Variant_Base< t_HEAD, t_TAIL > >  rhs)
inline

If the specified rhs holds the same alternative type as this object, move assign the contained value of rhs to the contained value of this object. Otherwise, destroy the currently held alternative object (if any) and, if rhs holds a value, move-construct the corresponding alternative of this object from the contained value of rhs. The allocators of this object and rhs both remain unchanged. If the construction of a new alternative object exits via an exception, this Variant_Base object is left in a valueless by exception state. All alternatives shall be move constructible and move assignable.

◆ operator=() [2/2]

template<class t_HEAD , class... t_TAIL>
Variant_Base< t_HEAD, t_TAIL... > & bslstl::Variant_Base< t_HEAD, t_TAIL >::operator= ( const Variant_Base< t_HEAD, t_TAIL > &  rhs)
inline

If the specified rhs holds the same alternative type as this object, copy assign the contained value of rhs to the contained value of this object. Otherwise, destroy the contained value of this object (if any) and, if rhs holds a value, copy-construct the corresponding alternative of this object from the contained value of rhs. The allocators of this object and rhs both remain unchanged. If the construction of a new alternative object exits via an exception, this Variant_Base object is left in a valueless by exception state. This behavior differs from the standard, for reasons that are explained in the documentation for variant::operator=. All alternatives shall be copy constructible and copy assignable.

◆ reset()

template<class t_HEAD , class... t_TAIL>
void bslstl::Variant_Base< t_HEAD, t_TAIL >::reset ( )

Destroy the contained value, if any.

Member Data Documentation

◆ d_type

template<class t_HEAD , class... t_TAIL>
size_t bslstl::Variant_Base< t_HEAD, t_TAIL >::d_type

Index of the currently active alternative in this variant object, or bsl::variant_npos if the variant is valueless by exception.

◆ d_union

template<class t_HEAD , class... t_TAIL>
Variant_Union bslstl::Variant_Base< t_HEAD, t_TAIL >::d_union

Union holding the alternative object.


The documentation for this struct was generated from the following file: