Does std::map::iterator return a copy of value or a value itself?
I'm trying to create a map inside a map: typedef map<float,mytype> inner_map; typedef map<float,inner_map> outer_map; Will I be able to put something inside inner map, or does iterator::second returns a copy? stl_pair.h suggests the latter: 74: _T2 second; ///< @c second is a copy of the second object but my test program run fine with the code like this: it = my_map.lower_bound(3.1415); (*it).second.insert(inner_map::value_type(2.71828,"Hello world!"); So where is the truth? Is this a copy or not? The comment in stl_pair.h is misleading in this specific case. There will be no copy, since the