RESTinio
Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 > Class Template Reference

#include <variant.hpp>

Classes

union  aligned_storage_t
 

Public Member Functions

 variant ()
 
 variant (T0 const &t0)
 
 variant (T1 const &t1)
 
 variant (T2 const &t2)
 
 variant (T3 const &t3)
 
 variant (T4 const &t4)
 
 variant (T5 const &t5)
 
 variant (T6 const &t6)
 
 variant (variant const &rhs)
 
 ~variant ()
 
variantoperator= (variant const &rhs)
 
variantoperator= (T0 const &t0)
 
variantoperator= (T1 const &t1)
 
variantoperator= (T2 const &t2)
 
variantoperator= (T3 const &t3)
 
variantoperator= (T4 const &t4)
 
variantoperator= (T5 const &t5)
 
variantoperator= (T6 const &t6)
 
std::size_t index () const
 
bool valueless_by_exception () const
 
void swap (variant &rhs) variant_noexcept
 
template<class T >
variant_constexpr std::size_t index_of () const variant_noexcept
 
template<class T >
T & get ()
 
template<class T >
T constget () const
 
template<std::size_t I>
variant_alternative< I, variant >::type & get ()
 
template<std::size_t I>
variant_alternative< I, variant >::type constget () const
 

Private Types

enum  { data_size = detail::typelist_max< variant_types >::value }
 
typedef detail::helper< T0, T1, T2, T3, T4, T5, T6 > helper_type
 
typedef helper_type::type_index_t type_index_t
 
typedef detail::typelist_max< variant_types >::type max_type
 

Private Member Functions

typedef variant_TL7 (T0, T1, T2, T3, T4, T5, T6) variant_types
 
void * ptr () variant_noexcept
 
void constptr () const variant_noexcept
 
template<class U >
U * as ()
 
template<class U >
U constas () const
 
variant_constexpr std::size_t max_index () const variant_noexcept
 
variant_constexpr type_index_t variant_npos_internal () const variant_noexcept
 
variantcopy_assign (variant const &rhs)
 
template<class T , std::size_t I>
variantcopy_assign_value (T const &value)
 
void swap_value (std::size_t index, variant &rhs)
 
typedef variant_ALIGN_AS (max_type) align_as_type
 

Private Attributes

aligned_storage_t data
 
type_index_t type_index
 

Detailed Description

template<class T0, class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
class nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >

Definition at line 813 of file variant.hpp.

Member Typedef Documentation

◆ helper_type

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
typedef detail::helper< T0, T1, T2, T3, T4, T5, T6 > nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::helper_type
private

Definition at line 899 of file variant.hpp.

◆ max_type

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
typedef detail::typelist_max< variant_types >::type nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::max_type
private

Definition at line 1282 of file variant.hpp.

◆ type_index_t

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
typedef helper_type::type_index_t nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::type_index_t
private

Definition at line 1122 of file variant.hpp.

Member Enumeration Documentation

◆ anonymous enum

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
anonymous enum
private
Enumerator
data_size 

Definition at line 1265 of file variant.hpp.

Constructor & Destructor Documentation

◆ variant() [1/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( )
inline

Definition at line 903 of file variant.hpp.

◆ variant() [2/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( T0 const t0)
inline

Definition at line 905 of file variant.hpp.

◆ variant() [3/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( T1 const t1)
inline

Definition at line 906 of file variant.hpp.

◆ variant() [4/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( T2 const t2)
inline

Definition at line 907 of file variant.hpp.

◆ variant() [5/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( T3 const t3)
inline

Definition at line 908 of file variant.hpp.

◆ variant() [6/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( T4 const t4)
inline

Definition at line 909 of file variant.hpp.

◆ variant() [7/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( T5 const t5)
inline

Definition at line 910 of file variant.hpp.

◆ variant() [8/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( T6 const t6)
inline

Definition at line 911 of file variant.hpp.

◆ variant() [9/9]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant ( variant< T0, T1, T2, T3, T4, T5, T6 > const rhs)
inline

Definition at line 923 of file variant.hpp.

◆ ~variant()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::~variant ( )
inline

Definition at line 974 of file variant.hpp.

Member Function Documentation

◆ as() [1/2]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<class U >
U* nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::as ( )
inlineprivate

Definition at line 1135 of file variant.hpp.

◆ as() [2/2]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<class U >
U const* nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::as ( ) const
inlineprivate

Definition at line 1141 of file variant.hpp.

◆ copy_assign()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::copy_assign ( variant< T0, T1, T2, T3, T4, T5, T6 > const rhs)
inlineprivate

Definition at line 1156 of file variant.hpp.

◆ copy_assign_value()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<class T , std::size_t I>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::copy_assign_value ( T const value)
inlineprivate

Definition at line 1231 of file variant.hpp.

◆ get() [1/4]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<class T >
T& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::get ( )
inline

Definition at line 1082 of file variant.hpp.

◆ get() [2/4]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<class T >
T const& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::get ( ) const
inline

Definition at line 1095 of file variant.hpp.

◆ get() [3/4]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<std::size_t I>
variant_alternative< I, variant >::type& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::get ( )
inline

Definition at line 1109 of file variant.hpp.

◆ get() [4/4]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<std::size_t I>
variant_alternative< I, variant >::type const& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::get ( ) const
inline

Definition at line 1116 of file variant.hpp.

◆ index()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
std::size_t nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::index ( ) const
inline

Definition at line 1008 of file variant.hpp.

◆ index_of()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
template<class T >
variant_constexpr std::size_t nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::index_of ( ) const
inline

Definition at line 1076 of file variant.hpp.

◆ max_index()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant_constexpr std::size_t nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::max_index ( ) const
inlineprivate

Definition at line 1146 of file variant.hpp.

◆ operator=() [1/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( variant< T0, T1, T2, T3, T4, T5, T6 > const rhs)
inline

Definition at line 979 of file variant.hpp.

◆ operator=() [2/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( T0 const t0)
inline

Definition at line 999 of file variant.hpp.

◆ operator=() [3/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( T1 const t1)
inline

Definition at line 1000 of file variant.hpp.

◆ operator=() [4/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( T2 const t2)
inline

Definition at line 1001 of file variant.hpp.

◆ operator=() [5/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( T3 const t3)
inline

Definition at line 1002 of file variant.hpp.

◆ operator=() [6/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( T4 const t4)
inline

Definition at line 1003 of file variant.hpp.

◆ operator=() [7/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( T5 const t5)
inline

Definition at line 1004 of file variant.hpp.

◆ operator=() [8/8]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant& nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::operator= ( T6 const t6)
inline

Definition at line 1005 of file variant.hpp.

◆ ptr() [1/2]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
void* nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::ptr ( )
inlineprivate

Definition at line 1124 of file variant.hpp.

◆ ptr() [2/2]

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
void const* nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::ptr ( ) const
inlineprivate

Definition at line 1129 of file variant.hpp.

◆ swap()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
void nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::swap ( variant< T0, T1, T2, T3, T4, T5, T6 > &  rhs)
inline

Definition at line 1053 of file variant.hpp.

◆ swap_value()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
void nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::swap_value ( std::size_t  index,
variant< T0, T1, T2, T3, T4, T5, T6 > &  rhs 
)
inlineprivate

Definition at line 1249 of file variant.hpp.

◆ valueless_by_exception()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
bool nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::valueless_by_exception ( ) const
inline

Definition at line 1013 of file variant.hpp.

◆ variant_ALIGN_AS()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
typedef nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant_ALIGN_AS ( max_type  )
private

◆ variant_npos_internal()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
variant_constexpr type_index_t nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant_npos_internal ( ) const
inlineprivate

Definition at line 1151 of file variant.hpp.

◆ variant_TL7()

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
typedef nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::variant_TL7 ( T0  ,
T1  ,
T2  ,
T3  ,
T4  ,
T5  ,
T6   
)
private

Member Data Documentation

◆ data

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
aligned_storage_t nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::data
private

Definition at line 1287 of file variant.hpp.

◆ type_index

template<class T0 , class T1 = detail::T1, class T2 = detail::T2, class T3 = detail::T3, class T4 = detail::T4, class T5 = detail::T5, class T6 = detail::T6>
type_index_t nonstd::variants::variant< T0, T1, T2, T3, T4, T5, T6 >::type_index
private

Definition at line 1293 of file variant.hpp.


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