September 10, 2006
... and all without macros, or type-unsafe variadics/insertion operators, or template meta-programming trickery. ;-)

The full performance test suite and results will be posted on the Pantheios website (http://pantheios.org/) shortly (hopefully before the end of next w/e).

Cheers

Matthew

P.S. I'm also 50% there with working out how to support log4j-like format strings, which would look like the following:

    std::string    arg0 = "blah blah";
    HWND      arg1 = ::GetDesktopWindow();

    pantheios::fmt_log(pantheios::debug
                            , "This is the format string, containing
argument 0: {0}, arg 1 {1}, and arg 0 {0} again!"
                            , arg0, arg1);

Note that arg0 is used twice. But any conversions in such cases would only be done once.

The format string would be split into slices (no memory allocation, of course!), and, along with its arguments, would be turned into an array of slices, which the core already understands and processes efficiently.

I'm also confident that the the format string can be loaded from a "resource bundle", and would be JIT-compiled into an array of string slices.

    pantheios::fmt_log(pantheios::debug
                            , pantheios::msgId(MY_MESSAGE_1)
                            , arg0, arg1);

But this is all going to have to be 1.1. For now, I have a few other things occupying my time ("real work" + http://extendedstl.com, http://breakingupthemonolith.com, and XMLSTL).