I could compile this with vc 2008 -Thorsten void test() { typedef std::set< unsigned > the_set_t; typedef std::map< unsigned, the_set_t > the_map_t; the_map_t data = boost::assign::map_list_of< unsigned, the_set_t > ( 1, boost::assign::list_of(10)(20)(30) ) ( 2, boost::assign::list_of(12)(22)(32) ) ( 3, boost::assign::list_of(13)(23)(33) ) ( 4, boost::assign::list_of(14)(24)(34) ) ; the_map_t::const_iterator iter = data.begin(); the_map_t::const_iterator fin = data.end(); for (; iter != fin; ++iter ) { std::cout << "Index: " << iter->first << " { "; std::copy( iter->second.begin(), iter->second.end(), std::ostream_iterator<unsigned>( std::cout, " " ) ); std::cout << "}\n"; } return; }