#include #include #include #include #include #include #include namespace mpl = boost::mpl; enum MemberId { YESNO , STH , OTHER }; struct sth_t { int i; long j; }; template struct wrap { T value; }; template struct incomplete; typedef mpl::map< mpl::pair< mpl::integral_c< MemberId, YESNO > , bool > , mpl::pair< mpl::integral_c< MemberId, STH > , sth_t const& > , mpl::pair< mpl::integral_c< MemberId, OTHER > , char const* > > id_to_member_type_t; // incomplete< mpl::inherit_linearly< id_to_member_type_t , mpl::inherit< mpl::_1 , wrap< mpl::first< mpl::_2 > > > >::type // > debug; int main() { return 0; }