- Custom timestamp type instead of std::chrono (passed by reference despite being 64 bits)
- Use of pointer/size pairs instead of std::span
- Use of const std::string& instead of std::string_view
- Catching exceptions, logging, rethrowing, and catching and logging again
- Custom timestamp type instead of std::chrono (passed by reference despite being 64 bits)
- Use of pointer/size pairs instead of std::span
- Use of const std::string& instead of std::string_view
- Catching exceptions, logging, rethrowing, and catching and logging again