rogeeff wrote:
All macro solutions require recompilation, therefore they
are not acceptable for real-world needs.
Everything that requires recompilation is not acceptable.
Macros are used only as a helper facility for format *definition*. 
You can always have separate mechanism to support runtime cjange of
the format.

      
It should be possible to update format definitions and add new
format definitions without recompilation.

It is often not acceptable if translating messages to another language
requires recompilation of the executable. However, translating
messages often requires modifications in format definitions,
such as changing parameter order.

That's why in many international applications format definitions
are stored in separate places (eg. text files), and it is possible
to modify these text files without updating executable.

I see no way of supporting this approach using streams
without something like submitted formatter.

Best wishes,
Kostya