16template <
typename C,
typename T>
20 constexpr static auto get_type(){
21 if constexpr (std::is_function_v<T>){
32 using type =
typename decltype(get_type())::type;
34 template <
typename Obj>
35 requires (std::same_as<Obj, class_type>)
37 if constexpr (std::is_function_v<T>){
38 return (std::forward<Obj>(
obj).*value)();
41 return std::forward<Obj>(
obj).*value;
46template <
typename T,
typename C>
53 template <
typename Obj>
54 requires (std::same_as<Obj, class_type>)
56 return value(std::forward<Obj>(
obj));
60template <
typename C,
typename T>
63template <
typename C,
typename T>
66template <
typename T, std::
size_t N>
70 using type =
typename accessor::type;
79 template <
typename Obj>
80 requires (std::same_as<std::decay_t<Obj>,
class_type>)
82 return value(std::forward<Obj>(
obj));
87template <
typename T, std::
size_t N>
90template <
typename T, std::
size_t N>
103 template <
typename C>
std::string code_for()
Definition repr:39
typename decltype(get_type())::type type
Definition members.h:32
C class_type
Definition members.h:31
constexpr decltype(auto) operator()(Obj &&obj) noexcept
Definition members.h:36
T C::* value
Definition members.h:29
constexpr decltype(auto) operator()(Obj &&obj) noexcept
Definition members.h:55
T type
Definition members.h:51
C class_type
Definition members.h:50
static constexpr bool is_valid_for
Definition members.h:104
constexpr Member(T accessor)
Definition members.h:76
typename accessor::type type
Definition members.h:70
constexpr decltype(auto) operator()(Obj &&obj) noexcept
Definition members.h:81
const_string< N > name
Definition members.h:74
typename accessor::class_type class_type
Definition members.h:71
constexpr Member(T accessor, auto name_)
Definition members.h:77
Accessor< T > value
Definition members.h:73
Definition const_string.h:9