Boost logo

Boost :

From: Rob Stewart (stewart_at_[hidden])
Date: 2004-10-22 16:16:14

From: Chris Uzdavinis <chris_at_[hidden]>
> Rene Rivera <grafik.list_at_[hidden]> writes:
> > It's possible without macros for some compilers using careful template
> > instaciations.
> >
> > For example the very simple logger I wrote uses syntax like so (and
> > yes I prefer printf formatting :-)...
> >
> > log<RevisionLog>::trace(
> > "RevisionControl::commit_; wait for ticket #%d",ticket);
> >
> > Because the formatting is done by the trace call, and the trace call
> > is empty (and inlined) when the log is disabled, no formatting takes
> > place. Something similar can be done regardless of what the formatting
> > object is by having a specialization that does nothing.
> That does not eliminiate any overhead that may exist due to evaluating
> the function arguments prior to making the call, nor any potential
> side effects of those expressions.
> Personally, having debugging log statements completely disappear from
> the source code in a release build is more comforting, even if it
> involves a macro.

There are also plenty of times in which you want logging
available in release builds but you want minimal overhead when it
is disabled. A macro helps there, too, by moving the evaluation
of the argument list into the body of a conditional statement.

Rob Stewart                           stewart_at_[hidden]
Software Engineer           
Susquehanna International Group, LLP  using std::disclaimer;

Boost list run by bdawes at, gregod at, cpdaniel at, john at