Suppose I have a printf-like function (used for logging) utilizing perfect forwarding:
template<typename... Arguments>
void awesome_printf(std::string const& fmt, Arguments&&... args)
{
boost::format f(fmt);
f % /* How to specify `args` here? */;
BlackBoxLogFunction(boost::str(f).c_str());
}
(I didn't compile this but my real function follows this guideline)
How can I "unroll" the variadic argument into the boost::format variable f?
I did some googling and found an interesting solution:
I don't know if this is a recommended solution but it seems to work. I don't like the hacky
static_castusage, which seems necessary to silence the unused variable warnings on GCC.