#include #include #include struct some_tag {}; typedef boost::fusion::map < boost::fusion::pair< some_tag, int > > my_map ; typedef boost::fusion::result_of::value_at_key < my_map , some_tag >::type return_type ; return_type foo( my_map & m ) { return boost::fusion::at_key< some_tag >( m ) = 5; } int main() { my_map m; }