39 std::string_view
s, std::size_t
n) {
40 {
a.write_null() } -> std::same_as<serialization_result<void>>;
41 {
a.write_bool(
b) } -> std::same_as<serialization_result<void>>;
42 {
a.write_signed(
i) } -> std::same_as<serialization_result<void>>;
45 } -> std::same_as<serialization_result<void>>;
48 } -> std::same_as<serialization_result<void>>;
49 {
a.write_string(
s) } -> std::same_as<serialization_result<void>>;
50 {
a.begin_array(
n) } -> std::same_as<serialization_result<void>>;
51 {
a.end_array() } -> std::same_as<serialization_result<void>>;
52 {
a.begin_object(
n) } -> std::same_as<serialization_result<void>>;
53 {
a.write_key(
s) } -> std::same_as<serialization_result<void>>;
54 {
a.end_object() } -> std::same_as<serialization_result<void>>;
59 std::move_constructible<A> &&
60 requires(
const A &
a, std::size_t
i) {
61 {
a.kind() } -> std::same_as<serialization_kind>;
62 {
a.size() } -> std::same_as<std::size_t>;
63 {
a.read_bool() } -> std::same_as<bool>;
64 {
a.read_signed() } -> std::same_as<std::int64_t>;
65 {
a.read_unsigned() } -> std::same_as<std::uint64_t>;
66 {
a.read_floating() } -> std::same_as<double>;
67 {
a.read_string() } -> std::same_as<std::string_view>;
68 {
a.element(
i) } -> std::same_as<A>;
69 requires std::same_as<std::remove_cvref_t<
decltype(
a.member(
i).value)>,
A>;
70 {
a.member(
i).name } -> std::convertible_to<std::string_view>;