30template <
typename Member,
typename Parent, std::
size_t Index>
47 requires(std::is_aggregate_v<T> && !(std::is_array_v<T> ||
has_custom_members<T> || detail::has_repr_member<T>))
49 constexpr static auto member_count = librepr::detail::arity<T>;
52 static_assert(!std::is_same_v<member_tuple, void>,
"Aggregate reflection failed");
57 constexpr static bool can_descend =
true;
62 static_assert(members::size ==
decltype(
decomposed)::size,
63 "Decomposed obj does not match reflected member amount.");
Definition aggregate.h:23
auto to_reftuple(T &&object)
Definition to_reftuple.h:12
typename detail::ReBoxImpl< T, To >::type rebox
Definition pack.h:90
std::string code_for()
Definition repr:39
typename accessor::type type
Definition members.h:70
T type
Definition aggregate.h:55
static void visit(V &&visitor)
Definition aggregate.h:71
decltype(librepr::detail::to_reftuple(std::declval< T >())) member_tuple
Definition aggregate.h:51
typename pack::rebox< member_tuple, TypeList >::template map< std::remove_reference_t > member_types
Definition aggregate.h:54
typename member_types::template map< librepr::Reflect > members
Definition aggregate.h:56
static void visit(V &&visitor, T &obj)
Definition aggregate.h:60
Definition reflection/reflect.h:16
Definition customization.h:12
Definition aggregate.h:31
typename Parent::type parent_type
Definition aggregate.h:35
std::string_view name() const
Definition aggregate.h:37
typename Member::type type
Definition aggregate.h:33
Parent parent
Definition aggregate.h:34