30 { T::extent } -> std::convertible_to<std::size_t>;
52 using type =
typename T::type;
54 template <detail::ref_convertible_to<type> U>
55 requires(!std::same_as<Value, std::remove_cvref_t<U>>)
56 constexpr explicit(
false)
Value(
U&&
obj)
noexcept(
noexcept(detail::convert_ref<type>(std::forward<U>(
obj))))
63 constexpr explicit(
false)
operator type&()
const noexcept {
return *data; }
#define LIBREPR_MAYBE_DO(...)
Definition macro/util.h:101
Definition aggregate.h:28
std::string code_for()
Definition repr:39
Reflect(T &) -> Reflect< T >
Definition reflection/reflect.h:16
static void visit(V &&visitor)
Definition category.h:87
static auto type_name()
Definition category.h:84
T type
Definition category.h:83
void visit(V &&visitor)
Definition category.h:70
constexpr type & value() const noexcept
Definition category.h:67
Value(const Value &) noexcept=default
constexpr type & operator*() const noexcept
Definition category.h:64
typename T::type type
Definition category.h:52
T descend
Definition category.h:51
Value & operator=(const Value &) noexcept=default
constexpr type * operator->() const noexcept
Definition category.h:65