The History 15 years of dissatisfaction (with the IOStreams) and wondering (whether there is a better alternative to fprintf()). 2 giants (log4j and Pantheios) on whose inspirational shoulders to stand. 1 powerful concept (Shim) married to 1 persuasive pattern (Type Tunnel) 1 weekend to prove the concept Almost 2 years faffing around with work, and Pantheios, and Extended STL, and Monolith*, and so on before getting my act together and releasing it. The rest of my C++ programming life to enjoy fast, extensible, localised and 100% type-safe text formatting/output. The Alternative Are you dissatisfied with the usability, performance, lack of type-safety, and lack of / difficulty with extensibility of the printf()-family, Boost.Format and the IOStreams? Do you value speed, robustness and internationalisation support? If the answer to these questions is yes, meet FastFormat, the best C++ output/formatting library you'll ever use. It has: Very high robustness, including 100% type-safety . It is more robust than: C's Streams , C++'s IOStreams , Boost.Format and Loki.SafeFormat . Indeed, with the FastFormat.Write API it is impossible to write defective client code!

. It is more robust than: C's , C++'s , and . Indeed, with the API it is impossible to write defective client code! Very high efficiency . It is faster than: C++'s IOStreams (by ~100-900%), Boost.Format (by ~400-1600%) and Loki.SafeFormat (by ~35-450%). Verify the performance claims for yourself: just type " make test.performance "!

. It is faster than: C++'s (by ~100-900%), (by ~400-1600%) and (by ~35-450%). Verify the performance claims for yourself: just type " "! Infinite extensibility . You can extend it to work with any argument type, any output/destination type, and with any format type

. You can extend it to work with any argument type, any output/destination type, and with any format type I18N/L10N capabilities . The FastFormat.Format API is a replacement-based API (like the printf() -family, Boost.Format and Loki.SafeFormat ), and supports the runtime specification of format strings which facilitates L10N

. The API is a replacement-based API (like the -family, and ), and supports the runtime specification of format strings which facilitates L10N Simple syntax . There are no overloaded operators, no weird insertion operators/operations, and no need to prep your arguments. Just write simple, clear, transparent code, without sacrificing expressiveness for flexibility.

. There are no overloaded operators, no weird insertion operators/operations, and no need to prep your arguments. Just write simple, clear, transparent code, without sacrificing expressiveness for flexibility. Atomic operation . It doesn't write out statement elements one at a time, like the IOStreams , so has no atomicity issues

. It doesn't write out statement elements one at a time, like the , so has no atomicity issues Thread safety . Each statement operates independently from all others, and it works successfully in single and/or multithreaded scenarios

. Each statement operates independently from all others, and it works successfully in single and/or multithreaded scenarios Highly portable. It will work with all good modern C++ compilers; it even works with Visual C++ 6! And it does all of this without macros, operator overloading or template meta-programming tricks.

