title: Why can not omit braces when initializing map?
body: <p>Inspired by <a href="https://stackoverflow.com/a/11735045/476681">this answer</a>, I tried next example :</p>
  
  <pre><code>#include &lt;map&gt;
  #include &lt;string&gt;
  #include &lt;iostream&gt;
  
  int main()
  {
    const std::map&lt; int, std::string &gt; mapping = {
        1, "ONE",
        2, "TWO",
      };
  
    const auto it = mapping.find( 1 );
    if ( mapping.end() != it )
    {
      std::cout &lt;&lt; it-&gt;second &lt;&lt; std::endl;
    }
    else
    {
      std::cout &lt;&lt; "not found!" &lt;&lt; std::endl;
    }
  }
  </code></pre>
  
  <p>and the compilation failed with next error message (g++ 4.6.1) :</p>
  
  <pre><code>gh.cpp:11:5: error: could not convert '{1, "ONE", 2, "TWO"}' from '&lt;brace-enclosed initializer list&gt;' to 'const std::map&lt;int, std::basic_string&lt;char&gt; &gt;'
  </code></pre>
  
  <p>I know how to fix it :</p>
  
  <pre><code>  const std::map&lt; int, std::string &gt; mapping = {
        {1, "ONE"},
        {2, "TWO"},
      };
  </code></pre>
  
  <p>but why the compilation fails in the top example?</p>