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