#include #include #include typedef boost::unordered_map map_type; std::ostream& operator<<(std::ostream& o, const map_type& m) { o << "size: " << m.size(); BOOST_FOREACH (const map_type::value_type& p, m) o << ", " << p.first << " => " << p.second; return o; } map_type make_map() { map_type res; res["foo"] = "FOO"; res["bar"] = "BAR"; std::cerr << "make_map: " << res << std::endl; return res; } map_type return_map() { const map_type& res = make_map(); std::cerr << "return_map: " << res << std::endl; return res; } int main() { map_type map = return_map(); std::cerr << "main: " << map << std::endl; }