
With respect, I'm not sure there is *always* a better way than macros. For some applications macros provide a unique level of flexibility and efficiency. I'm the last person to advocate them, but when I constructed a logging library for our real-time scientific application, I was somewhat surprised to eventually figure out that logging macros *did* provide the best solution. So let's not discount John's effort on the grounds of anti-macro dogma alone, I'm sure we can find other problems ;).
I'm not discounting his efforts because of macros. What I am doing is pointing that they should be de-emphaisized and are not forced on me. If I dont care about the compile-time optimizations that a macro may provide, I should'nt be forced to use them. Macros may provide some flexibility for some users, but others wont care about them and dont want to have to deal with them. The typicaly use-case of the pubic interface of a c++ logging library should not include macros. They should only be offered as optional optimizations.