#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());
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dHVwbGU+CiNpbmNsdWRlIDxib29zdC9mdXNpb24vaW5jbHVkZS9mb3JfZWFjaC5ocHA+CiNpbmNsdWRlIDxib29zdC9mdXNpb24vYWRhcHRlZC9zdGRfdHVwbGUuaHBwPgoKc3RydWN0IG9wCnsKCXZvaWQgb3BlcmF0b3IoKShpbnQgeCkgY29uc3QKCXsKCQlzdGQ6OmNvdXQgPDwgImludCAiIDw8IHggPDwgc3RkOjplbmRsOwoJfQoJdm9pZCBvcGVyYXRvcigpKGNoYXIgeCkgY29uc3QKCXsKCQlzdGQ6OmNvdXQgPDwgIiciIDw8IHggPDwgIiciIDw8IHN0ZDo6ZW5kbDsKCX0KCXZvaWQgb3BlcmF0b3IoKShjb25zdCBzdGQ6OnN0cmluZyAmeCkgY29uc3QKCXsKCQlzdGQ6OmNvdXQgPDwgIlwiIiA8PCB4IDw8ICJcIiIgPDwgc3RkOjplbmRsOwoJfQp9OwoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnR1cGxlPGludCwgY2hhciwgc3RkOjpzdHJpbmc+IHYoMSwgJ2EnLCAiSGVsbG8iKTsKICAgIGJvb3N0OjpmdXNpb246OmZvcl9lYWNoKHYsIG9wKCkpOwp9Cg==