Skip to content

Instantly share code, notes, and snippets.

@jl2
Created July 26, 2013 23:12
Show Gist options
  • Select an option

  • Save jl2/6092861 to your computer and use it in GitHub Desktop.

Select an option

Save jl2/6092861 to your computer and use it in GitHub Desktop.
std::tuple to string, using boost::format
#include <iostream>
#include <boost/format.hpp>
#include <tuple>
template<uint N, uint MAX, typename... Args> struct tuple_formatter {
static void format_tuple(boost::format &fmt, const std::tuple<Args...>& args) {
fmt % std::get<N>(args);
tuple_formatter<N+1,MAX,Args...>::format_tuple(fmt, args);
}
};
template<uint MAX, typename... Args> struct tuple_formatter<MAX,MAX,Args...> {
static void format_tuple(boost::format &, const std::tuple<Args...>& ) {
}
};
template<typename... Args> boost::format &format_with_tuple(boost::format &fmt, const std::tuple<Args...>& args) {
tuple_formatter<0, sizeof...(Args), Args...>::format_tuple(fmt, args);
return fmt;
}
int main() {
boost::format tmp("%3% %1% %2%");
std::cout << boost::str(format_with_tuple(tmp, std::make_tuple("omg", 45, 3.1415))) << "\n";
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment