There are two problems that are being addressed here:
- Somewhat low-prio: the use of
operator, and the arg level logging.
- The use of
operator, helps with compile times, but is this really an issue these days? Computers are fast and this does not seem to be a bottleneck. People are used to std::format-style logging
- We can still keep the best of all worlds with arity macros for logging args which would rewrite the commas in the macro to another operator
- This also makes it hard to format arguments. Functions and symbols would have to be used (with namespace specifiers and whatnot) to wrap values in order to format them properly
- The bigger problem:
std::ostream is stupidly slow on Windows with MSVC STL. It makes an allocation on every instantiation. We can do better.
Maybe streams should be rewritten? Maybe we should base our code on Boost.Iostreams?
There are two problems that are being addressed here:
operator,and the arg level logging.operator,helps with compile times, but is this really an issue these days? Computers are fast and this does not seem to be a bottleneck. People are used tostd::format-style loggingstd::ostreamis stupidly slow on Windows with MSVC STL. It makes an allocation on every instantiation. We can do better.Maybe streams should be rewritten? Maybe we should base our code on Boost.Iostreams?