22template<concepts::Serializer S>
28 struct SerializerFunction {
29 template<
typename Format, concepts::Impl<io::Writer> Writer,
typename... Args>
35 util::forward<Args>(args)...);
37 return Format::serializer(util::forward<Writer>(writer), util::forward<Args>(args)...);
43constexpr inline auto serializer = detail::SerializerFunction {};
47template<
typename T,
typename Writer = any::AnyRef<io::Writer>,
typename... Args>
54template<
typename T,
typename Writer = any::AnyRef<io::Writer>,
typename... Args>
65 struct SerializeMetadataFunction {
66 template<
typename T,
typename S,
typename U = meta::RemoveCVRef<T>,
67 concepts::SerializationFormat V = meta::RemoveCVRef<S>>
86template<concepts::SerializationFormat S,
typename T>
92 struct SerializeFunction {
93 template<concepts::Serializer S,
typename T,
typename F = meta::SerializationFormat<S>>
104 template<concepts::Serializer S,
typename T,
typename F = meta::SerializationFormat<S>,
105 typename M = meta::SerializeMetadata<F, T>>
118 template<
typename Format, concepts::Impl<io::Writer> Writer,
typename T,
typename... Args>
120 constexpr auto operator()(Format
format,
Writer&& writer, T&& value, Args&&... args)
const
130constexpr inline auto serialize = detail::SerializeFunction {};
133 struct SerializeSizeFunction {
134 template<
typename Format,
typename T,
typename... Args>
135 constexpr auto operator()(Format
format, T&& value, Args&&... args)
const
143 if constexpr (concepts::TagInvocable<SerializeSizeFunction, Format, T, Args...>) {
146 auto writer = SizeWriter {};
149 return writer.written();
158 struct SerializableFunction {
159 template<concepts::Serializer S,
typename T,
typename U = meta::RemoveCVRef<T>>
174template<
typename T,
typename S>
Definition serialize.h:175
Definition serialize.h:13
Definition tag_invoke.h:33
Definition any_storable.h:9
constexpr tag_invoke_detail::TagInvokeFn tag_invoke
Definition tag_invoke.h:22
meta::List< WriteSome, Flush, InteractiveDevice > Writer
Definition writer.h:85
constexpr auto reflect
Definition reflect.h:47
constexpr auto serialize_size
Definition serialize.h:155
constexpr auto serialize_metadata
Definition serialize.h:82
constexpr auto serialize
Definition serialize.h:130
constexpr auto serializable
Definition serialize.h:170
constexpr auto serializer
Definition serialize.h:43
constexpr auto ref
Definition reference_wrapper.h:98
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
Definition any_storable.h:9
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8
constexpr auto in_place_type
Definition in_place_type.h:12
constexpr auto serializer
Definition serialize.h:43
Definition in_place_type.h:5