fsm
include
fsmpp17
contexts.h
Go to the documentation of this file.
1
12
#pragma once
13
14
#include <tuple>
15
16
namespace
escad
17
{
18
26
template
<
class
... T>
struct
contexts
{
30
explicit
contexts
(T&... ctxs) noexcept
31
: contexts_ {ctxs...}
32
{
33
}
34
38
template
<
class
U>
39
auto
&
get
() noexcept {
40
return
std::get<std::add_lvalue_reference_t<U>>(contexts_);
41
}
42
46
template
<
class
U>
47
auto
const
&
get
()
const
noexcept {
48
return
std::get<std::add_lvalue_reference_t<U>>(contexts_);
49
}
50
51
template
<
class
U>
52
static
auto
constexpr has = mpl::type_list_contains_v<
mpl::type_list
<T...>, U>;
53
54
private
:
55
std::tuple<T&...> contexts_;
56
};
57
58
}
// namespace fsm
escad::contexts::contexts
contexts(T &... ctxs) noexcept
Capture different Context types as references.
Definition:
contexts.h:30
escad
Definition:
compressed_pair.h:10
escad::contexts
A set of references to different context types.
Definition:
contexts.h:26
mpl::type_list
Alias template to facilitate the creation of named values.
Definition:
type_traits.h:142
Generated by
1.8.13