13#include <boost/fusion/include/at_c.hpp>
14#include <boost/fusion/adapted/struct/adapt_struct.hpp>
15#include <boost/fusion/include/adapt_struct.hpp>
27 template<
typename T,
typename Concrete>
41 template<
typename U = T,
typename Sub =
typename U::value_type>
50 return static_cast<Concrete&
> (*this);
69 template<
typename T,
typename... Tags>
72 using PKey::IndirectHolderBase::IndirectHolderBase;
75 template<
typename T,
typename... Args>
81 using Unique::IndirectHolderBase::IndirectHolderBase;
90 using NotNull::IndirectHolderBase::IndirectHolderBase;
104 template<
typename U,
typename... Tags>
117 using References::IndirectHolderBase::IndirectHolderBase;
119 template<
typename T,
typename... Tags>
125 template<
typename T,
typename... Tags>
136 template<
int... Fields>
139 template<
int... Fields>
142 template<
typename... Args>
145 template<
auto... Fields>
148 template<
typename... Args>
154 template<
typename T,
typename... Args>
169 inline static struct IgnoreTag {}
Ignore;
175 template<
auto... Ptrs>
181 template<
auto... Ptrs>
184 template<
typename Seq>
190 template<
typename Seq>
202 template<
typename Tag>
typename NotNull< T >::value_type NotNullValue_t
typename Unique< T >::value_type UniqueValue_t
typename References< Ptr >::value_type ReferencesValue_t
typename PKey< T, Args... >::value_type PKeyValue_t
MemberTypeType_t< decltype(Ptr)> MemberPtrType_t
const value_type * operator->() const
IndirectHolderBase(Sub val)
IndirectHolderBase(T val)
const value_type & operator*() const
IndirectHolderBase()=default
Concrete & operator=(T val)
static FieldsType< Ptrs... > Fields
static struct LC::Util::oral::InsertAction::IgnoreTag Ignore
std::variant< DefaultTag, IgnoreTag, Replace > ActionSelector_t
ActionSelector_t Selector_
static constexpr auto StaticCount()
static struct LC::Util::oral::InsertAction::DefaultTag Default
References(const PKey< T, Tags... > &key)
MemberPtrType_t< Ptr > member_type
References & operator=(const PKey< T, Tags... > &key)