| 
 | To whet your appetite, let's consider two examples. Your
       mission is to guess how many memory allocations are involved in each
       one. First, with the fmt()API:
 { // fmt() API
  std::string sink;
  char        fastfmt[] = "FastFormat";
  long        year = 2008;
  fastformat::fmt(sink, "Releasing {0} in {1}?", fastfmt, year);
  assert("Releasing FastFormat in 2008?" == sink);
 }
Next, with thewrite()API:
 { // write() API
  char                      buff[100];
  fastformat::c_string_sink sink(100, &buff[0]);
  std::string               fastfmt = "FastFormat";
  long                      year = 2008;
  fastformat::write(sink, "Releasing ", fastfmt, " in ", year, "?");
  assert(0 == ::strcmp(buff, "Releasing FastFormat in 2008?"));
 }
Let's see how well you did. In the first example, there is
       one memory allocation - no you did not misread, that's
       1 - as a result of a call toreserve()on thesinkinstance to ensure it has sufficient space to
       receive the formatted string.Think that's a fluke, or some deliberately chosen unrepresentative example? In the second example there's one memory allocation in the std::stringconstructor for the
       instantiation of thefastfmtvariable, and ... well,
       that's it. There are zero memory allocations involved in
       convertingyearinto a string, and combining it withfastfmtand the three literal strings into the result.We hope you're getting the picture. It's fast! ;-) Because we're stupidly busy, we're likely to not be providing all the example/tutorial documentation you might want. If you post a question on the FastFormat Help forum or the STLSoft newsgroup we'll do our best to answer your question, and will add a corresponding example to the documentation for the next release. | 
|   |  |