Go to the documentation of this file.
9 #ifndef EAGINE_PROTECTED_MEMBER_HPP
10 #define EAGINE_PROTECTED_MEMBER_HPP
19 template <
typename T,
typename Selector = type_
identity<T>>
33 template <
typename... P>
35 : _member(std::forward<P>(p)...) {}
44 template <
typename Selector,
typename T>
47 Selector
selector = Selector()) noexcept -> T& {
54 template <
typename Selector,
typename T>
57 Selector
selector = Selector()) noexcept -> const T& {
63 #endif // EAGINE_PROTECTED_MEMBER_HPP
Common code is placed in this namespace.
Definition: eagine.hpp:21
Template used to construct tag-types used mostly in tag-dispatching.
Definition: selector.hpp:21
static auto get_member(const protected_member< T, Selector > &pm, Selector selector=Selector()) noexcept -> const T &
Returns a const reference to the member stored in protected_member.
Definition: protected_member.hpp:55
static auto get_member(protected_member< T, Selector > &pm, Selector selector=Selector()) noexcept -> T &
Returns a reference to the member stored in protected_member.
Definition: protected_member.hpp:45
auto get_the_member(Selector=Selector()) const noexcept -> const T &
Returns a const reference to the stored member.
Definition: protected_member.hpp:28
Class holding a single tagged data member.
Definition: protected_member.hpp:20
auto get_the_member(Selector=Selector()) noexcept -> T &
Returns a reference to the stored member.
Definition: protected_member.hpp:23