4#include <crunch/messages/crunch_messages.hpp>
35template <
typename Policy,
typename Message>
38 requires(
const Message& msg, std::span<std::byte> output,
39 std::span<const std::byte> input) {
41 std::bool_constant<(Policy::template Size<Message>(),
true)>()
42 } -> std::same_as<std::true_type>;
43 { Policy::template Size<Message>() } -> std::same_as<std::size_t>;
45 { Policy::Serialize(msg, output) } -> std::same_as<std::size_t>;
47 Policy::Deserialize(input,
const_cast<Message&
>(msg))
48 } -> std::same_as<std::optional<Error>>;
50 std::bool_constant<(Policy::GetFormat(), true)>()
51 } -> std::same_as<std::true_type>;
52 { Policy::GetFormat() } -> std::same_as<Format>;
Concept defining a Serialization/Deserialization policy.
Definition: crunch_serdes.hpp:36
Concept ensuring a type is a fully valid CrunchMessage.
Definition: crunch_messages.hpp:119
The public API for Crunch.
Definition: crunch_endian.hpp:10