33 #include <type_traits> 34 #include <boost/fusion/include/at_c.hpp> 35 #include <boost/fusion/adapted/struct/adapt_struct.hpp> 36 #include <boost/fusion/include/adapt_struct.hpp> 48 template<
typename T,
typename Concrete>
62 template<
typename U = T,
typename Sub =
typename U::value_type>
71 return static_cast<Concrete&
> (*this);
90 template<
typename T,
typename... Tags>
93 using PKey::IndirectHolderBase::IndirectHolderBase;
96 template<
typename T,
typename... Args>
102 using Unique::IndirectHolderBase::IndirectHolderBase;
111 using NotNull::IndirectHolderBase::IndirectHolderBase;
125 template<
typename U,
typename... Tags>
138 using References::IndirectHolderBase::IndirectHolderBase;
140 template<
typename T,
typename... Tags>
146 template<
typename T,
typename... Tags>
157 template<
int... Fields>
160 template<
int... Fields>
163 template<
typename... Args>
166 template<
auto... Fields>
169 template<
typename... Args>
175 template<
typename T,
typename... Args>
189 inline static struct DefaultTag {}
Default;
190 inline static struct IgnoreTag {}
Ignore;
196 template<
auto... Ptrs>
202 template<
auto... Ptrs>
205 template<
typename Seq>
211 template<
typename Seq>
223 template<
typename Tag>
static struct LC::Util::oral::InsertAction::IgnoreTag Ignore
const value_type * operator->() const
static constexpr auto StaticCount()
MemberPtrType_t< Ptr > member_type
typename PKey< T, Args... >::value_type PKeyValue_t
typename References< Ptr >::value_type ReferencesValue_t
MemberTypeType_t< decltype(Ptr)> MemberPtrType_t
IndirectHolderBase()=default
References & operator=(const PKey< T, Tags... > &key)
Concrete & operator=(T val)
typename NotNull< T >::value_type NotNullValue_t
IndirectHolderBase(T val)
ActionSelector_t Selector_
static struct LC::Util::oral::InsertAction::DefaultTag Default
typename Unique< T >::value_type UniqueValue_t
IndirectHolderBase(Sub val)
static FieldsType< Ptrs... > Fields
std::variant< DefaultTag, IgnoreTag, Replace > ActionSelector_t
const value_type & operator*() const
References(const PKey< T, Tags... > &key)