internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant Class Reference
Collaboration diagram for internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant:

## Public Member Functions

| variant ()
template<typename T >
| variant (const T &x)
| variant (const variant &other)
void | operator= (const variant &rhs)
template<typename U >
const U & | variant_cast_to () const
template<typename U >
bool | variant_is_a () const
bool | variant_is_default_constructed () const
| ~variant ()

## Private Types

typedef pick_tuple_max< N, Tuple, alignment_of >::type | AlignType
typedef pick_tuple_max< N, Tuple, size_of >::type | MaxSizeType
typedef tbb::aligned_space< AlignType, MaxNElements > | SpaceType

## Private Attributes

SpaceType | my_space

## Static Private Attributes

static const size_t | N = tbb::flow::tuple_size<Tuple>::value
static const size_t | MaxNBytes = (sizeof(Wrapper<MaxSizeType>)+sizeof(AlignType)-1)
static const size_t | MaxNElements = MaxNBytes/sizeof(AlignType)
static const size_t | MaxSize = sizeof(SpaceType)

## Detailed Description

### template<typename TagType, typename T0, typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
class internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant

Definition at line 633 of file _flow_graph_types_impl.h.

## Member Typedef Documentation

## AlignType

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

typedef pick_tuple_max<N, Tuple, alignment_of>::type internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::AlignType

private

Definition at line 635 of file _flow_graph_types_impl.h.

## MaxSizeType

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

typedef pick_tuple_max<N, Tuple, size_of>::type internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxSizeType

private

Definition at line 636 of file _flow_graph_types_impl.h.

## SpaceType

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

typedef tbb::aligned_space<AlignType, MaxNElements> internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::SpaceType

private

Definition at line 639 of file _flow_graph_types_impl.h.

## Constructor & Destructor Documentation

## variant() [1/3]

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant | ( |  | ) |

inline

Definition at line 644 of file _flow_graph_types_impl.h.

{ (void) new(&my_space) Wrapper<default_constructed>(default_constructed()); }
void
void
Definition: ittnotify_static.h:91
internal::tagged_msg::variant::my_space
SpaceType my_space
Definition: _flow_graph_types_impl.h:640

References internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space, and void.

## variant() [2/3]

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
template<typename T >

internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant | ( | const T & | x | ) |

inline

Definition at line 647 of file _flow_graph_types_impl.h.

{
do_if<T, is_element_of<T, N, Tuple>::value>::construct(&my_space,x);
}
value
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function void size_t int ITT_FORMAT d __itt_heap_function void ITT_FORMAT p __itt_heap_function void void size_t int ITT_FORMAT d no args no args unsigned int ITT_FORMAT u const __itt_domain __itt_id ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain __itt_id ITT_FORMAT p const __itt_domain __itt_id __itt_timestamp __itt_timestamp ITT_FORMAT lu const __itt_domain __itt_id __itt_id __itt_string_handle ITT_FORMAT p const __itt_domain ITT_FORMAT p const __itt_domain __itt_string_handle unsigned long long value
Definition: ittnotify_static.h:192

References internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

## variant() [3/3]

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant | ( | const variant & | other | ) |

inline

Definition at line 651 of file _flow_graph_types_impl.h.

{
const WrapperBase * h = punned_cast<const WrapperBase *>(&(other.my_space));
h->CopyTo(&my_space);
}
h
void const char const char int ITT_FORMAT __itt_group_sync x void const char ITT_FORMAT __itt_group_sync s void ITT_FORMAT __itt_group_sync p void ITT_FORMAT p void ITT_FORMAT p no args __itt_suppress_mode_t unsigned int void size_t ITT_FORMAT d void ITT_FORMAT p void ITT_FORMAT p __itt_model_site __itt_model_site_instance ITT_FORMAT p __itt_model_task __itt_model_task_instance ITT_FORMAT p void ITT_FORMAT p void ITT_FORMAT p void size_t ITT_FORMAT d void ITT_FORMAT p const wchar_t ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s const char ITT_FORMAT s no args void ITT_FORMAT p size_t ITT_FORMAT d no args const wchar_t const wchar_t ITT_FORMAT s __itt_heap_function h
Definition: ittnotify_static.h:159

References h, and internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

## ~variant()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::~variant | ( |  | ) |

inline

Definition at line 680 of file _flow_graph_types_impl.h.

{
WrapperBase *h = punned_cast<WrapperBase *>(&my_space);
h->~WrapperBase();
}

References h, and internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

## Member Function Documentation

## operator=()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

void internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::operator= | ( | const variant & | rhs | ) |

inline

Definition at line 658 of file _flow_graph_types_impl.h.

{
if(&rhs != this) {
WrapperBase *h = punned_cast<WrapperBase *>(&my_space);
h->~WrapperBase();
const WrapperBase *ch = punned_cast<const WrapperBase *>(&(rhs.my_space));
ch->CopyTo(&my_space);
}
}

References internal::WrapperBase::CopyTo(), h, and internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

Here is the call graph for this function:

## variant_cast_to()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
template<typename U >

const U& internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_cast_to | ( |  | ) | const

inline

Definition at line 668 of file _flow_graph_types_impl.h.

{
const Wrapper<U> *h = dynamic_cast<const Wrapper<U>*>(punned_cast<const WrapperBase *>(&my_space));
if(!h) {
tbb::internal::throw_exception(tbb::internal::eid_bad_tagged_msg_cast);
}
return h->value();
}
tbb::internal::throw_exception
void throw_exception(exception_id eid)
Versionless convenience wrapper for throw_exception_v4()
Definition: tbb_exception.h:105
tbb::internal::eid_bad_tagged_msg_cast
@ eid_bad_tagged_msg_cast
Definition: tbb_exception.h:92

References tbb::internal::eid_bad_tagged_msg_cast, h, internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space, and tbb::internal::throw_exception().

Here is the call graph for this function:

## variant_is_a()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>
template<typename U >

bool internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_is_a | ( |  | ) | const

inline

Definition at line 676 of file _flow_graph_types_impl.h.

{ return dynamic_cast<const Wrapper<U>*>(punned_cast<const WrapperBase *>(&my_space)) != NULL; }

References internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space.

## variant_is_default_constructed()

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

bool internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_is_default_constructed | ( |  | ) | const

inline

Definition at line 678 of file _flow_graph_types_impl.h.

{return variant_is_a<default_constructed>();}

Referenced by internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::is_default_constructed().

Here is the caller graph for this function:

## Member Data Documentation

## MaxNBytes

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxNBytes = (sizeof(Wrapper<MaxSizeType>)+sizeof(AlignType)-1)

static private

Definition at line 637 of file _flow_graph_types_impl.h.

## MaxNElements

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxNElements = MaxNBytes/sizeof(AlignType)

static private

Definition at line 638 of file _flow_graph_types_impl.h.

## MaxSize

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::MaxSize = sizeof(SpaceType)

static private

Definition at line 641 of file _flow_graph_types_impl.h.

## my_space

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

SpaceType internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::my_space

private

Definition at line 640 of file _flow_graph_types_impl.h.

Referenced by internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::operator=(), internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant(), internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_cast_to(), internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::variant_is_a(), and internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::~variant().

## N

template<typename TagType , typename T0 , typename T1 = tagged_null_type, typename T2 = tagged_null_type, typename T3 = tagged_null_type, typename T4 = tagged_null_type, typename T5 = tagged_null_type, typename T6 = tagged_null_type, typename T7 = tagged_null_type, typename T8 = tagged_null_type, typename T9 = tagged_null_type>

const size_t internal::tagged_msg< TagType, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 >::variant::N = tbb::flow::tuple_size<Tuple>::value

static private

Definition at line 634 of file _flow_graph_types_impl.h.

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

- _flow_graph_types_impl.h

Copyright © 2005-2020 Intel Corporation. All Rights Reserved.

Intel, Pentium, Intel Xeon, Itanium, Intel XScale and VTune are registered trademarks or trademarks of Intel Corporation or its subsidiaries in the United States and other countries.

* Other names and brands may be claimed as the property of others.