11 #include <type_traits> 23 template<
typename T,
typename Concrete>
37 template<
typename U = T,
typename Sub =
typename U::value_type>
46 return static_cast<Concrete&
> (*this);
65 template<
typename T,
typename...
Tags>
68 using PKey::IndirectHolderBase::IndirectHolderBase;
71 template<
typename T,
typename... Args>
77 using Unique::IndirectHolderBase::IndirectHolderBase;
86 using NotNull::IndirectHolderBase::IndirectHolderBase;
100 template<
typename U,
typename...
Tags>
113 using References::IndirectHolderBase::IndirectHolderBase;
115 template<
typename T,
typename...
Tags>
121 template<
typename T,
typename...
Tags>
132 template<
size_t... Fields>
135 template<
size_t... Fields>
138 template<
typename... Args>
141 template<
auto... Fields>
144 template<
typename... Args>
150 template<
typename T,
typename... Args>
164 constexpr
inline static struct DefaultTag {}
Default {};
165 constexpr
inline static struct IgnoreTag {}
Ignore {};
169 template<
auto... Ptrs>
172 template<
auto... Ptrs>
175 constexpr
inline static struct PKeyType {}
PKey {};
const value_type * operator->() const
MemberPtrType_t< Ptr > member_type
static constexpr FieldsType< Ptrs... > Fields
typename PKey< T, Args... >::value_type PKeyValue_t
static constexpr struct LC::Util::oral::InsertAction::IgnoreTag Ignore
typename References< Ptr >::value_type ReferencesValue_t
MemberTypeType_t< decltype(Ptr)> MemberPtrType_t
Q_DECL_IMPORT const QString Tags
IndirectHolderBase()=default
References & operator=(const PKey< T, Tags... > &key)
Concrete & operator=(T val)
typename NotNull< T >::value_type NotNullValue_t
IndirectHolderBase(T val)
typename Unique< T >::value_type UniqueValue_t
IndirectHolderBase(Sub val)
const value_type & operator*() const
static constexpr struct LC::Util::oral::InsertAction::DefaultTag Default
References(const PKey< T, Tags... > &key)