#include #include #include template < typename T1, typename T2 > struct Test { typedef boost::tuple tuple_t; tuple_t tup; enum Members { NAME, VALUE }; typename boost::tuples::element::type name() { return boost::get(tup); } template < Members mem > typename boost::tuples::element::type member() { return boost::get(tup); } }; int main() { Test t; t.tup = Test::tuple_t("Test", 42); std::cout << t.name() << std::endl; std::cout << t.member::VALUE>() << std::endl; std::cin.get(); }