Crunch
A Message Definition Language for Getting Things Right
Loading...
Searching...
No Matches
Crunch::messages::CrunchMessage Concept Reference

Concept ensuring a type is a fully valid CrunchMessage. More...

#include <crunch_messages.hpp>

Concept definition

template<typename Message>
std::regular<Message> && HasConstexprGetFields<Message> &&
tuple_members_are_valid_fields<decltype(Message{}.get_fields())> &&
has_unique_field_ids<decltype(Message{}.get_fields())> &&
HasConstexprValidate<Message>
Concept ensuring a type is a fully valid CrunchMessage.
Definition: crunch_messages.hpp:119
Concept to detect if a type quacks like a Crunch Message.
Definition: crunch_field.hpp:226

Detailed Description

Concept ensuring a type is a fully valid CrunchMessage.

Checks:

  1. Regular type (copyable, default constructible, etc).
  2. Has message_id and get_fields().
  3. All fields in get_fields() are valid.
  4. Field IDs are unique.
  5. Has a Validate() method returning std::optional<Error>.