Hello, I use boost::format to convert a float to a string: void CalledThousandsOfTimesPerSecond(float f) { GetStream() << boost::format("%0.3f") % f << GetSomeOtherContent(); } I normally would deal with something like this by adding a static const variable: void CalledThousandsOfTimesPerSecondFromManyThreads(float f) { static const boost::format Formatter("%0.3f"); GetStream() << Formatter % f << GetSomeOtherContent(); } But this does not work. boost::format::operator% is not declared const. Question 1: Why is boost::format::operator% declared mutable? What is is mutating? Question 2: How do I not spend overhead constructing the same boost::format thousands of times per second? Possible answers to question 2: void CalledThousandsOfTimesPerSecond(float f) { static boost::format Formatter("%0.3f"); // MUTABLE -- this might not be thread safe??? GetStream() << Formatter % f << GetSomeOtherContent(); } void CalledThousandsOfTimesPerSecond(float f) { static const boost::format Formatter1("%0.3f"); boost::format Formatter2(Formatter1); // lame but I guess it works GetStream() << Formatter2 % f << GetSomeOtherContent(); } Thank you, Chris