title: Using decltype in std::map
body: <p>Consider these three statements:</p>
  
  <pre><code>std::map&lt;int, std::string&gt; foo;
  std::map&lt;int, std::string&gt;::value_type;
  decltype(foo)::value_type;
  </code></pre>
  
  <p>Why isn't the last one legal? I thought that <code>decltype(foo)</code> would be an operator yielding the map type <code>std::map&lt;int, std::string&gt;</code> from which I could extract the <code>value_type</code>.</p>
  
  <p>I'm using MSVC2012.</p>