Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
Holder< TYPES >::CaseSelect< FUNCTOR > Struct Template Reference

#include "lib/variant-o.hpp"

Description

template<typename TYPES>
template<class FUNCTOR>
struct lib::variant::Holder< TYPES >::CaseSelect< FUNCTOR >

provide a dispatcher table based visitation mechanism

Definition at line 124 of file variant-o.hpp.

Public Types

typedef FUNCTOR::Ret Ret
 
typedef Ret() Func(Buffer &)
 

Public Attributes

Functable_ [TYPECNT]
 

Static Public Member Functions

template<typename T >
static Ret trampoline (Buffer &storage)
 

Public Member Functions

 CaseSelect ()
 
Ret invoke (Buffer &storage)
 

Constructor & Destructor Documentation

◆ CaseSelect()

template<typename TYPES >
template<class FUNCTOR >
CaseSelect ( )
inline

Member Typedef Documentation

◆ Ret

template<typename TYPES >
template<class FUNCTOR >
typedef FUNCTOR::Ret Ret

Definition at line 126 of file variant-o.hpp.

◆ Func

template<typename TYPES >
template<class FUNCTOR >
typedef Ret() Func(Buffer &)

Definition at line 127 of file variant-o.hpp.

Member Function Documentation

◆ trampoline()

template<typename TYPES >
template<class FUNCTOR >
template<typename T >
static Ret trampoline ( Buffer storage)
inlinestatic

Definition at line 139 of file variant-o.hpp.

References Holder< TYPES >::Buffer::buffer_.

◆ invoke()

template<typename TYPES >
template<class FUNCTOR >
Ret invoke ( Buffer storage)
inline

Definition at line 146 of file variant-o.hpp.

References Holder< TYPES >::access(), Holder< TYPES >::CaseSelect< FUNCTOR >::table_, Holder< TYPES >::TYPECNT, and Holder< TYPES >::Buffer::which_.

Referenced by Holder< TYPES >::access().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ table_

template<typename TYPES >
template<class FUNCTOR >
Func* table_[TYPECNT]
+ Collaboration diagram for Holder< TYPES >::CaseSelect< FUNCTOR >:

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