22#if USING(LIBREPR_COMPILER_CLANG)
24#define LIBREPR_SUBOBJECT_PTR(...) ::librepr::Wrap{__VA_ARGS__}
27#define LIBREPR_SUBOBJECT_PTR(...) __VA_ARGS__
33template <
typename C,
typename T, T C::*ptr>
37 constexpr static auto value =
38#if USING(LIBREPR_COMPILER_MSVC)
46 librepr::ctvi::detail::name_from_member_ptr<ptr>();
52 using type =
typename decltype(
info)::class_type;
55 if constexpr (!
info.name.empty()) {
89template <auto Accessor>
100 []<
Member... members>() { return std::array{std::string_view{custom_member_name<members>}...}; });
104 }
else if constexpr (std::is_aggregate_v<T> && !std::is_array_v<T>) {
105 constexpr auto member_count =
arity<T>;
124template <
typename T, std::
size_t Idx>
125 requires(Idx <= member_names<T>.size())
126constexpr inline auto member_name = member_names<T>[Idx];
Definition reflection.h:15
T is_member_function_pointer_v
#define LIBREPR_SUBOBJECT_PTR(...)
Definition member.h:27
constexpr auto name_from_subobject()
Definition ctvi/ctvi.h:37
LIBREPR_WARNING_POP constexpr auto raw_member_names
Definition member.h:85
constexpr auto get_member_names()
Definition member.h:93
LIBREPR_WARNING_PUSH constexpr auto raw_member_name
Definition member.h:78
constexpr auto custom_member_name
Definition member.h:90
constexpr auto to_addr_tuple(T &&object)
Definition to_tuple.h:20
std::string code_for()
Definition repr:39
constexpr auto member_names
Definition member.h:122
constexpr auto member_name
Definition member.h:126
constexpr decltype(auto) get(RefTuple< Ts... > const &tuple) noexcept
Definition reftuple.h:59
Definition customization.h:12
Definition const_string.h:9
typename decltype(info)::class_type type
Definition member.h:52
static constexpr auto member_name()
Definition member.h:54
C type
Definition member.h:35
#define LIBREPR_WARNING_DISABLE(COMPILER, WARNING)
Definition warning.h:37