Protocol::serializer wants the same serializer closure passed twice so that it can specialize it for two types: once to compute the size, and a second time to actually serialize the content. This macro helps by taking the factory type and applying the serializer expression twice.
Error value returned by functions that do not throw any user-defined exceptions.
Set the default ID's for unknown exceptions and fields. When reading off the wire, these default values will be overridden with the unrecognized id (which must be nonnegative).