OptDefaultStorage< T > Class Template Reference

#include <optional.h>

Public Member Functions

 OptDefaultStorage ()
 
 OptDefaultStorage (NO_VALUE_TYPE)
 
OptDefaultStorageoperator= (NO_VALUE_TYPE)
 
 MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR (OptDefaultStorage, std::is_copy_constructible< T >::value)
 
template<typename U , typename = typename std::enable_if<std::is_constructible<T, const U&>::value>::type>
 OptDefaultStorage (const OptDefaultStorage< U > &src)
 
 MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT (OptDefaultStorage, std::is_copy_assignable< T >::value)
 
template<typename U , typename = typename std::enable_if<std::is_assignable<T, const U&>::value>::type>
OptDefaultStorageoperator= (const OptDefaultStorage< U > &src)
 
 MAXON_DECLARE_CONDITIONAL_MOVE_CONSTRUCTOR (OptDefaultStorage, std::is_move_constructible< T >::value)
 
template<typename U , typename = typename std::enable_if<std::is_constructible<T, U&&>::value>::type>
 OptDefaultStorage (OptDefaultStorage< U > &&src)
 
 MAXON_DECLARE_CONDITIONAL_MOVE_ASSIGNMENT (OptDefaultStorage, std::is_move_assignable< T >::value)
 
template<typename U , typename = typename std::enable_if<std::is_assignable<T, U&&>::value>::type>
OptDefaultStorageoperator= (OptDefaultStorage< U > &&src)
 
template<typename U >
 OptDefaultStorage (U &&value)
 
template<typename U >
OptDefaultStorageoperator= (U &&value)
 
template<typename ... ARGS>
 OptDefaultStorage (IN_PLACE_TYPE, ARGS &&... args)
 
template<typename ... ARGS>
void Emplace (ARGS &&... args)
 
Result< void > CopyFrom (const OptDefaultStorage &src)
 
 ~OptDefaultStorage ()
 
T & GetValueRef ()
 
const T & GetValueRef () const
 
Bool HasValue () const
 

Private Member Functions

template<typename U >
void CopyConstruct (const OptDefaultStorage< U > &src)
 
template<typename U >
void CopyAssign (const OptDefaultStorage< U > &src)
 
template<typename U >
void MoveConstruct (OptDefaultStorage< U > &&src)
 
template<typename U >
void MoveAssign (OptDefaultStorage< U > &&src)
 
void ClearValue ()
 
void Destruct ()
 

Private Attributes

Bool _hasValue
 
union {
   T   _valueStorage
 
}; 
 

Constructor & Destructor Documentation

◆ OptDefaultStorage() [1/6]

◆ OptDefaultStorage() [2/6]

◆ OptDefaultStorage() [3/6]

OptDefaultStorage ( const OptDefaultStorage< U > &  src)

◆ OptDefaultStorage() [4/6]

◆ OptDefaultStorage() [5/6]

OptDefaultStorage ( U &&  value)
explicit

◆ OptDefaultStorage() [6/6]

OptDefaultStorage ( IN_PLACE_TYPE  ,
ARGS &&...  args 
)
explicit

◆ ~OptDefaultStorage()

Member Function Documentation

◆ operator=() [1/4]

OptDefaultStorage& operator= ( NO_VALUE_TYPE  )

◆ MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR()

MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR ( OptDefaultStorage< T >  ,
std::is_copy_constructible< T >::value   
)

◆ MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT()

MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT ( OptDefaultStorage< T >  ,
std::is_copy_assignable< T >::value   
)

◆ operator=() [2/4]

OptDefaultStorage& operator= ( const OptDefaultStorage< U > &  src)

◆ MAXON_DECLARE_CONDITIONAL_MOVE_CONSTRUCTOR()

MAXON_DECLARE_CONDITIONAL_MOVE_CONSTRUCTOR ( OptDefaultStorage< T >  ,
std::is_move_constructible< T >::value   
)

◆ MAXON_DECLARE_CONDITIONAL_MOVE_ASSIGNMENT()

MAXON_DECLARE_CONDITIONAL_MOVE_ASSIGNMENT ( OptDefaultStorage< T >  ,
std::is_move_assignable< T >::value   
)

◆ operator=() [3/4]

OptDefaultStorage& operator= ( OptDefaultStorage< U > &&  src)

◆ operator=() [4/4]

OptDefaultStorage& operator= ( U &&  value)

◆ Emplace()

void Emplace ( ARGS &&...  args)

◆ CopyFrom()

Result<void> CopyFrom ( const OptDefaultStorage< T > &  src)

◆ GetValueRef() [1/2]

T& GetValueRef ( )

◆ GetValueRef() [2/2]

const T& GetValueRef ( ) const

◆ HasValue()

Bool HasValue ( ) const

◆ CopyConstruct()

void CopyConstruct ( const OptDefaultStorage< U > &  src)
private

◆ CopyAssign()

void CopyAssign ( const OptDefaultStorage< U > &  src)
private

◆ MoveConstruct()

void MoveConstruct ( OptDefaultStorage< U > &&  src)
private

◆ MoveAssign()

void MoveAssign ( OptDefaultStorage< U > &&  src)
private

◆ ClearValue()

void ClearValue ( )
private

◆ Destruct()

void Destruct ( )
private

Member Data Documentation

◆ _hasValue

Bool _hasValue
private

◆ _valueStorage

T _valueStorage

◆ @1097

union { ... }