Skip to content

Instantly share code, notes, and snippets.

@gchudnov
Last active February 12, 2018 03:42
Show Gist options
  • Save gchudnov/6a90d51af004d97337ec to your computer and use it in GitHub Desktop.
Save gchudnov/6a90d51af004d97337ec to your computer and use it in GitHub Desktop.
C++ variadic formatter using boost::format
#include <iostream>
#include <boost/format.hpp>
inline std::string format_str_recursive(boost::format& message) {
return message.str();
}
template<typename TValue, typename... TArgs>
std::string format_str_recursive(boost::format& message, TValue&& arg, TArgs&&... args) {
message % std::forward<TValue>(arg);
return format_str_recursive(message, std::forward<TArgs>(args)...);
}
template<typename... TArgs>
std::string format_str(const char* fmt, TArgs&&... args) {
boost::format message(fmt);
return format_str_recursive(message, std::forward<TArgs>(args)...);
}
int main() {
std::cout << format_str("Boost %s %d.%d.%d", "version", 1, 57, 0) << std::endl;
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment