quill
Static Public Member Functions | List of all members
Codec< Arg, typename > Struct Template Reference

Codec contract notes (apply to this primary template and every specialization, including those in the quill/std headers): More...

#include <Codec.h>

Static Public Member Functions

QUILL_NODISCARD static QUILL_ATTRIBUTE_HOT size_t compute_encoded_size (QUILL_MAYBE_UNUSED detail::SizeCacheVector &conditional_arg_size_cache, QUILL_MAYBE_UNUSED Arg const &arg) noexcept
 
static QUILL_ATTRIBUTE_HOT void encode (std::byte *&buffer, QUILL_MAYBE_UNUSED detail::SizeCacheVector const &conditional_arg_size_cache, QUILL_MAYBE_UNUSED uint32_t &conditional_arg_size_cache_index, Arg const &arg) noexcept
 
static auto decode_arg (std::byte *&buffer)
 
static void decode_and_store_arg (std::byte *&buffer, DynamicFormatArgStore *args_store)
 

Detailed Description

template<typename Arg, typename = void>
struct Codec< Arg, typename >

Codec contract notes (apply to this primary template and every specialization, including those in the quill/std headers):

compute_encoded_size() and encode() are intentionally NOT declared noexcept when they delegate to a nested Codec<T>. User-provided codecs (DirectFormatCodec, hand-written formatters, container element codecs that touch fs::path, std::wstring conversions, etc.) may throw at the frontend hot path. Marking the wrapper noexcept would turn that into std::terminate via the noexcept boundary. The exception propagates back through log_statement() and is reported via BackendWorker error_notifier on the backend side.

Leaf specializations that only memcpy arithmetic/enum/raw-pointer payloads keep noexcept — they cannot throw.typename = void for specializations with enable_if


The documentation for this struct was generated from the following file: