diff --git a/src/libutil/logging.hh b/src/libutil/logging.hh index 3fbd75562..beb5e6b64 100644 --- a/src/libutil/logging.hh +++ b/src/libutil/logging.hh @@ -161,7 +161,7 @@ template inline void warn(const std::string & fs, const Args & ... args) { boost::format f(fs); - nop{boost::io::detail::feed(f, args)...}; + formatHelper(f, args...); logger->warn(f.str()); } diff --git a/src/libutil/types.hh b/src/libutil/types.hh index 4a6be28a2..5d3e76421 100644 --- a/src/libutil/types.hh +++ b/src/libutil/types.hh @@ -51,6 +51,16 @@ struct FormatOrString ... a_n’. However, ‘fmt(s)’ is equivalent to ‘s’ (so no %-expansion takes place). */ +inline void formatHelper(boost::format & f) +{ +} + +template +inline void formatHelper(boost::format & f, const T & x, const Args & ... args) +{ + formatHelper(f % x, args...); +} + inline std::string fmt(const std::string & s) { return s; @@ -71,7 +81,7 @@ inline std::string fmt(const std::string & fs, const Args & ... args) { boost::format f(fs); f.exceptions(boost::io::all_error_bits ^ boost::io::too_many_args_bit); - nop{boost::io::detail::feed(f, args)...}; + formatHelper(f, args...); return f.str(); }