#include <iostream>
#include <string>
#include <tuple>
#include <boost/fusion/include/for_each.hpp>
#include <boost/fusion/adapted/std_tuple.hpp>

struct op
{
	void operator()(int x) const
	{
		std::cout << "int " << x << std::endl;
	}
	void operator()(char x) const
	{
		std::cout << "'" << x << "'" << std::endl;
	}
	void operator()(const std::string &x) const
	{
		std::cout << "\"" << x << "\"" << std::endl;
	}
};

int main()
{
    std::tuple<int, char, std::string> v(1, 'a', "Hello");
    boost::fusion::for_each(v, op());
}
