alpaqa pantr
Nonconvex constrained optimization
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
ProblemVTable< Conf > Struct Template Reference

#include <alpaqa/include/alpaqa/problem/type-erased-problem.hpp>

Detailed Description

template<Config Conf>
struct alpaqa::ProblemVTable< Conf >

Definition at line 19 of file type-erased-problem.hpp.

+ Inheritance diagram for ProblemVTable< Conf >:
+ Collaboration diagram for ProblemVTable< Conf >:

Public Types

using Box = alpaqa::Box< config_t >
 
template<class F >
using optional_function_t = util::BasicVTable::optional_function_t< F, ProblemVTable >
 
template<class F >
using optional_const_function_t = util::BasicVTable::optional_const_function_t< F, ProblemVTable >
 
template<class F >
using required_function_t = typename required_function< F >::type
 A required function includes a void pointer to self, in addition to the arguments of F.
 
template<class F >
using required_const_function_t = typename required_const_function< F >::type
 A required function includes a void pointer to self, in addition to the arguments of F.
 

Public Member Functions

template<class P >
 ProblemVTable (util::VTableTypeTag< P > t)
 
 ProblemVTable ()=default
 

Static Public Member Functions

static real_t calc_ŷ_dᵀŷ (const void *self, rvec g_ŷ, crvec y, crvec Σ, const ProblemVTable &vtable)
 
static index_t default_eval_inactive_indices_res_lna (const void *, real_t, crvec, crvec, rindexvec, const ProblemVTable &)
 
static void default_eval_jac_g (const void *, crvec, rindexvec, rindexvec, rvec, const ProblemVTable &)
 
static length_t default_get_jac_g_num_nonzeros (const void *, const ProblemVTable &)
 
static void default_eval_grad_gi (const void *, crvec, index_t, rvec, const ProblemVTable &)
 
static void default_eval_hess_L_prod (const void *, crvec, crvec, real_t, crvec, rvec, const ProblemVTable &)
 
static void default_eval_hess_L (const void *, crvec, crvec, real_t, rindexvec, rindexvec, rvec, const ProblemVTable &)
 
static length_t default_get_hess_L_num_nonzeros (const void *, const ProblemVTable &)
 
static void default_eval_hess_ψ_prod (const void *self, crvec x, crvec y, crvec, real_t scale, crvec v, rvec Hv, const ProblemVTable &vtable)
 
static void default_eval_hess_ψ (const void *self, crvec x, crvec y, crvec, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values, const ProblemVTable &vtable)
 
static length_t default_get_hess_ψ_num_nonzeros (const void *, const ProblemVTable &)
 
static real_t default_eval_f_grad_f (const void *self, crvec x, rvec grad_fx, const ProblemVTable &vtable)
 
static real_t default_eval_f_g (const void *self, crvec x, rvec g, const ProblemVTable &vtable)
 
static void default_eval_grad_f_grad_g_prod (const void *self, crvec x, crvec y, rvec grad_f, rvec grad_gxy, const ProblemVTable &vtable)
 
static void default_eval_grad_L (const void *self, crvec x, crvec y, rvec grad_L, rvec work_n, const ProblemVTable &vtable)
 
static real_t default_eval_ψ (const void *self, crvec x, crvec y, crvec Σ, rvec ŷ, const ProblemVTable &vtable)
 
static void default_eval_grad_ψ (const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)
 
static real_t default_eval_ψ_grad_ψ (const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)
 
static const Boxdefault_get_box_C (const void *, const ProblemVTable &)
 
static const Boxdefault_get_box_D (const void *, const ProblemVTable &)
 
static void default_check (const void *, const ProblemVTable &)
 

Public Attributes

required_const_function_t< void(crvec z, rvec e)> eval_proj_diff_g
 
required_const_function_t< void(rvec y, real_t M)> eval_proj_multipliers
 
required_const_function_t< real_t(real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p)> eval_prox_grad_step
 
required_const_function_t< real_t(crvec x)> eval_f
 
required_const_function_t< void(crvec x, rvec grad_fx)> eval_grad_f
 
required_const_function_t< void(crvec x, rvec gx)> eval_g
 
required_const_function_t< void(crvec x, crvec y, rvec grad_gxy)> eval_grad_g_prod
 
optional_const_function_t< index_t(real_t γ, crvec x, crvec grad_ψ, rindexvec J)> eval_inactive_indices_res_lna = default_eval_inactive_indices_res_lna
 
optional_const_function_t< void(crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values)> eval_jac_g = default_eval_jac_g
 
optional_const_function_t< length_t()> get_jac_g_num_nonzeros = default_get_jac_g_num_nonzeros
 
optional_const_function_t< void(crvec x, index_t i, rvec grad_gi)> eval_grad_gi = default_eval_grad_gi
 
optional_const_function_t< void(crvec x, crvec y, real_t scale, crvec v, rvec Hv)> eval_hess_L_prod = default_eval_hess_L_prod
 
optional_const_function_t< void(crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_L = default_eval_hess_L
 
optional_const_function_t< length_t()> get_hess_L_num_nonzeros = default_get_hess_L_num_nonzeros
 
optional_const_function_t< void(crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv)> eval_hess_ψ_prod = default_eval_hess_ψ_prod
 
optional_const_function_t< void(crvec x, crvec y, crvec Σ, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_ψ = default_eval_hess_ψ
 
optional_const_function_t< length_t()> get_hess_ψ_num_nonzeros = default_get_hess_ψ_num_nonzeros
 
optional_const_function_t< real_t(crvec x, rvec grad_fx)> eval_f_grad_f = default_eval_f_grad_f
 
optional_const_function_t< real_t(crvec x, rvec g)> eval_f_g = default_eval_f_g
 
optional_const_function_t< void(crvec x, crvec y, rvec grad_f, rvec grad_gxy)> eval_grad_f_grad_g_prod = default_eval_grad_f_grad_g_prod
 
optional_const_function_t< void(crvec x, crvec y, rvec grad_L, rvec work_n)> eval_grad_L = default_eval_grad_L
 
optional_const_function_t< real_t(crvec x, crvec y, crvec Σ, rvec ŷ)> eval_ψ = default_eval_ψ
 
optional_const_function_t< void(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_grad_ψ = default_eval_grad_ψ
 
optional_const_function_t< real_t(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_ψ_grad_ψ = default_eval_ψ_grad_ψ
 
optional_const_function_t< const Box &()> get_box_C = default_get_box_C
 
optional_const_function_t< const Box &()> get_box_D = default_get_box_D
 
optional_const_function_t< void()> check = default_check
 
length_t n
 
length_t m
 
required_const_function_t< void(void *storage)> copy = nullptr
 Copy-construct a new instance into storage.
 
required_function_t< void(void *storage)> move = nullptr
 Move-construct a new instance into storage.
 
required_function_t< void()> destroy = nullptr
 Destruct the given instance.
 
const std::type_info * type = &typeid(void)
 The original type of the stored object.
 

Member Typedef Documentation

◆ Box

using Box = alpaqa::Box<config_t>

Definition at line 21 of file type-erased-problem.hpp.

◆ optional_function_t

Definition at line 24 of file type-erased-problem.hpp.

◆ optional_const_function_t

Definition at line 26 of file type-erased-problem.hpp.

◆ required_function_t

using required_function_t = typename required_function<F>::type
inherited

A required function includes a void pointer to self, in addition to the arguments of F.

Definition at line 83 of file type-erasure.hpp.

◆ required_const_function_t

A required function includes a void pointer to self, in addition to the arguments of F.

For const-qualified member functions.

Definition at line 87 of file type-erasure.hpp.

Constructor & Destructor Documentation

◆ ProblemVTable() [1/2]

ProblemVTable ( util::VTableTypeTag< P >  t)
inline

Definition at line 149 of file type-erased-problem.hpp.

◆ ProblemVTable() [2/2]

ProblemVTable ( )
default

Member Function Documentation

◆ calc_ŷ_dᵀŷ()

auto calc_ŷ_dᵀŷ ( const void *  self,
rvec  g_ŷ,
crvec  y,
crvec  Σ,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 8 of file type-erased-problem.tpp.

◆ default_eval_inactive_indices_res_lna()

auto default_eval_inactive_indices_res_lna ( const void *  ,
real_t  ,
crvec  ,
crvec  ,
rindexvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 35 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_jac_g()

void default_eval_jac_g ( const void *  ,
crvec  ,
rindexvec  ,
rindexvec  ,
rvec  ,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 42 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_get_jac_g_num_nonzeros()

auto default_get_jac_g_num_nonzeros ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 49 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_grad_gi()

void default_eval_grad_gi ( const void *  ,
crvec  ,
index_t  ,
rvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 55 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_hess_L_prod()

void default_eval_hess_L_prod ( const void *  ,
crvec  ,
crvec  ,
real_t  ,
crvec  ,
rvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 61 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_hess_L()

void default_eval_hess_L ( const void *  ,
crvec  ,
crvec  ,
real_t  ,
rindexvec  ,
rindexvec  ,
rvec  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 67 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_get_hess_L_num_nonzeros()

auto default_get_hess_L_num_nonzeros ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 73 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_hess_ψ_prod()

void default_eval_hess_ψ_prod ( const void *  self,
crvec  x,
crvec  y,
crvec  ,
real_t  scale,
crvec  v,
rvec  Hv,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 79 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_hess_ψ()

void default_eval_hess_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  ,
real_t  scale,
rindexvec  inner_idx,
rindexvec  outer_ptr,
rvec  H_values,
const ProblemVTable< Conf > &  vtable 
)
static

Definition at line 88 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_get_hess_ψ_num_nonzeros()

auto default_get_hess_ψ_num_nonzeros ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 98 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_f_grad_f()

auto default_eval_f_grad_f ( const void *  self,
crvec  x,
rvec  grad_fx,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
auto ProblemVTable<Conf>::default_eval_f_grad_f(const void *self, crvec x, rvec grad_fx,
const ProblemVTable &vtable) -> real_t {
vtable.eval_grad_f(self, x, grad_fx);
return vtable.eval_f(self, x);
}
typename Conf::real_t real_t
Definition: config.hpp:51
typename Conf::rvec rvec
Definition: config.hpp:55
typename Conf::crvec crvec
Definition: config.hpp:56
static real_t default_eval_f_grad_f(const void *self, crvec x, rvec grad_fx, const ProblemVTable &vtable)

Definition at line 106 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_f_g()

auto default_eval_f_g ( const void *  self,
crvec  x,
rvec  g,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
auto ProblemVTable<Conf>::default_eval_f_g(const void *self, crvec x, rvec g,
const ProblemVTable &vtable) -> real_t {
vtable.eval_g(self, x, g);
return vtable.eval_f(self, x);
}
static real_t default_eval_f_g(const void *self, crvec x, rvec g, const ProblemVTable &vtable)

Definition at line 116 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_grad_f_grad_g_prod()

void default_eval_grad_f_grad_g_prod ( const void *  self,
crvec  x,
crvec  y,
rvec  grad_f,
rvec  grad_gxy,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
rvec grad_f, rvec grad_gxy,
const ProblemVTable &vtable) {
vtable.eval_grad_f(self, x, grad_f);
vtable.eval_grad_g_prod(self, x, y, grad_gxy);
}
static void default_eval_grad_f_grad_g_prod(const void *self, crvec x, crvec y, rvec grad_f, rvec grad_gxy, const ProblemVTable &vtable)
required_const_function_t< void(crvec x, crvec y, rvec grad_gxy)> eval_grad_g_prod
required_const_function_t< void(crvec x, rvec grad_fx)> eval_grad_f

Definition at line 126 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_grad_L()

void default_eval_grad_L ( const void *  self,
crvec  x,
crvec  y,
rvec  grad_L,
rvec  work_n,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
void ProblemVTable<Conf>::default_eval_grad_L(const void *self, crvec x, crvec y, rvec grad_L,
rvec work_n, const ProblemVTable &vtable) {
if (y.size() == 0) /* [[unlikely]] */
return vtable.eval_grad_f(self, x, grad_L);
vtable.eval_grad_f_grad_g_prod(self, x, y, grad_L, work_n, vtable);
grad_L += work_n;
}
static void default_eval_grad_L(const void *self, crvec x, crvec y, rvec grad_L, rvec work_n, const ProblemVTable &vtable)
optional_const_function_t< void(crvec x, crvec y, rvec grad_f, rvec grad_gxy)> eval_grad_f_grad_g_prod

Definition at line 137 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_ψ()

auto default_eval_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  Σ,
rvec  ŷ,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
auto ProblemVTable<Conf>::default_eval_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec ŷ,
const ProblemVTable &vtable) -> real_t {
if (y.size() == 0) /* [[unlikely]] */
return vtable.eval_f(self, x);
auto f = vtable.eval_f_g(self, x, ŷ, vtable);
auto dᵀŷ = calc_ŷ_dᵀŷ(self, ŷ, y, Σ, vtable);
// ψ(x) = f(x) + ½ dᵀŷ
auto ψ = f + real_t(0.5) * dᵀŷ;
return ψ;
}
static real_t default_eval_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec ŷ, const ProblemVTable &vtable)
static real_t calc_ŷ_dᵀŷ(const void *self, rvec g_ŷ, crvec y, crvec Σ, const ProblemVTable &vtable)

Definition at line 149 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_grad_ψ()

void default_eval_grad_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  Σ,
rvec  grad_ψ,
rvec  work_n,
rvec  work_m,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
rvec grad_ψ, rvec work_n, rvec work_m,
const ProblemVTable &vtable) {
if (y.size() == 0) /* [[unlikely]] */ {
vtable.eval_grad_f(self, x, grad_ψ);
} else {
vtable.eval_g(self, x, work_m);
(void)calc_ŷ_dᵀŷ(self, work_m, y, Σ, vtable);
vtable.eval_grad_L(self, x, work_m, grad_ψ, work_n, vtable);
}
}
optional_const_function_t< void(crvec x, crvec y, rvec grad_L, rvec work_n)> eval_grad_L
static void default_eval_grad_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)
required_const_function_t< void(crvec x, rvec gx)> eval_g

Definition at line 165 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_eval_ψ_grad_ψ()

auto default_eval_ψ_grad_ψ ( const void *  self,
crvec  x,
crvec  y,
crvec  Σ,
rvec  grad_ψ,
rvec  work_n,
rvec  work_m,
const ProblemVTable< Conf > &  vtable 
)
static
Implementation:
rvec grad_ψ, rvec work_n, rvec work_m,
const ProblemVTable &vtable) -> real_t {
if (y.size() == 0) /* [[unlikely]] */
return vtable.eval_f_grad_f(self, x, grad_ψ, vtable);
auto &ŷ = work_m;
// ψ(x) = f(x) + ½ dᵀŷ
auto f = vtable.eval_f_g(self, x, ŷ, vtable);
auto dᵀŷ = calc_ŷ_dᵀŷ(self, ŷ, y, Σ, vtable);
auto ψ = f + real_t(0.5) * dᵀŷ;
// ∇ψ(x) = ∇f(x) + ∇g(x) ŷ
vtable.eval_grad_L(self, x, ŷ, grad_ψ, work_n, vtable);
return ψ;
}
static real_t default_eval_ψ_grad_ψ(const void *self, crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m, const ProblemVTable &vtable)

Definition at line 181 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_get_box_C()

auto default_get_box_C ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 199 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_get_box_D()

auto default_get_box_D ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 204 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

◆ default_check()

void default_check ( const void *  ,
const ProblemVTable< Conf > &   
)
static

Definition at line 209 of file type-erased-problem.tpp.

+ Here is the caller graph for this function:

Member Data Documentation

◆ eval_proj_diff_g

required_const_function_t<void(crvec z, rvec e)> eval_proj_diff_g

Definition at line 33 of file type-erased-problem.hpp.

◆ eval_proj_multipliers

required_const_function_t<void(rvec y, real_t M)> eval_proj_multipliers

Definition at line 35 of file type-erased-problem.hpp.

◆ eval_prox_grad_step

required_const_function_t<real_t(real_t γ, crvec x, crvec grad_ψ, rvec x̂, rvec p)> eval_prox_grad_step

Definition at line 37 of file type-erased-problem.hpp.

◆ eval_f

Definition at line 39 of file type-erased-problem.hpp.

◆ eval_grad_f

required_const_function_t<void(crvec x, rvec grad_fx)> eval_grad_f

Definition at line 41 of file type-erased-problem.hpp.

◆ eval_g

required_const_function_t<void(crvec x, rvec gx)> eval_g

Definition at line 43 of file type-erased-problem.hpp.

◆ eval_grad_g_prod

required_const_function_t<void(crvec x, crvec y, rvec grad_gxy)> eval_grad_g_prod

Definition at line 45 of file type-erased-problem.hpp.

◆ eval_inactive_indices_res_lna

Definition at line 47 of file type-erased-problem.hpp.

◆ eval_jac_g

optional_const_function_t<void(crvec x, rindexvec inner_idx, rindexvec outer_ptr, rvec J_values)> eval_jac_g = default_eval_jac_g

Definition at line 51 of file type-erased-problem.hpp.

◆ get_jac_g_num_nonzeros

Definition at line 53 of file type-erased-problem.hpp.

◆ eval_grad_gi

optional_const_function_t<void(crvec x, index_t i, rvec grad_gi)> eval_grad_gi = default_eval_grad_gi

Definition at line 55 of file type-erased-problem.hpp.

◆ eval_hess_L_prod

optional_const_function_t<void(crvec x, crvec y, real_t scale, crvec v, rvec Hv)> eval_hess_L_prod = default_eval_hess_L_prod

Definition at line 57 of file type-erased-problem.hpp.

◆ eval_hess_L

optional_const_function_t<void(crvec x, crvec y, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_L = default_eval_hess_L

Definition at line 59 of file type-erased-problem.hpp.

◆ get_hess_L_num_nonzeros

Definition at line 61 of file type-erased-problem.hpp.

◆ eval_hess_ψ_prod

optional_const_function_t<void(crvec x, crvec y, crvec Σ, real_t scale, crvec v, rvec Hv)> eval_hess_ψ_prod = default_eval_hess_ψ_prod

Definition at line 63 of file type-erased-problem.hpp.

◆ eval_hess_ψ

optional_const_function_t<void(crvec x, crvec y, crvec Σ, real_t scale, rindexvec inner_idx, rindexvec outer_ptr, rvec H_values)> eval_hess_ψ = default_eval_hess_ψ

Definition at line 65 of file type-erased-problem.hpp.

◆ get_hess_ψ_num_nonzeros

Definition at line 67 of file type-erased-problem.hpp.

◆ eval_f_grad_f

Definition at line 71 of file type-erased-problem.hpp.

◆ eval_f_g

Definition at line 73 of file type-erased-problem.hpp.

◆ eval_grad_f_grad_g_prod

optional_const_function_t<void(crvec x, crvec y, rvec grad_f, rvec grad_gxy)> eval_grad_f_grad_g_prod = default_eval_grad_f_grad_g_prod

Definition at line 75 of file type-erased-problem.hpp.

◆ eval_grad_L

optional_const_function_t<void(crvec x, crvec y, rvec grad_L, rvec work_n)> eval_grad_L = default_eval_grad_L

Definition at line 79 of file type-erased-problem.hpp.

◆ eval_ψ

Definition at line 81 of file type-erased-problem.hpp.

◆ eval_grad_ψ

optional_const_function_t<void(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_grad_ψ = default_eval_grad_ψ

Definition at line 83 of file type-erased-problem.hpp.

◆ eval_ψ_grad_ψ

optional_const_function_t<real_t(crvec x, crvec y, crvec Σ, rvec grad_ψ, rvec work_n, rvec work_m)> eval_ψ_grad_ψ = default_eval_ψ_grad_ψ

Definition at line 85 of file type-erased-problem.hpp.

◆ get_box_C

Definition at line 89 of file type-erased-problem.hpp.

◆ get_box_D

Definition at line 91 of file type-erased-problem.hpp.

◆ check

Definition at line 95 of file type-erased-problem.hpp.

◆ n

Definition at line 146 of file type-erased-problem.hpp.

◆ m

Definition at line 146 of file type-erased-problem.hpp.

◆ copy

required_const_function_t<void(void *storage)> copy = nullptr
inherited

Copy-construct a new instance into storage.

Definition at line 100 of file type-erasure.hpp.

◆ move

required_function_t<void(void *storage)> move = nullptr
inherited

Move-construct a new instance into storage.

Definition at line 102 of file type-erasure.hpp.

◆ destroy

required_function_t<void()> destroy = nullptr
inherited

Destruct the given instance.

Definition at line 104 of file type-erasure.hpp.

◆ type

const std::type_info* type = &typeid(void)
inherited

The original type of the stored object.

Definition at line 106 of file type-erasure.hpp.


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