title: std::map find() returning error
body: <p>I am trying to compile the below code in VS2015. The first version of my std::map is compiling, but the seconds version does not compile. Please let me know what I am doing wrong here..</p>
  
  <pre><code>std::map&lt;int, std::string&gt; _p;
  typedef std::pair&lt;int, std::string&gt; _q;
  _p.insert(_q(0, "Football0"));
  _p.insert(_q(1, "Football1"));
  std::string str = _p[1];    //OK...compiles and executes, no error, str = "Football1" as expected
  
  std::map&lt;int, DataDictionary&gt; _p1;
  typedef std::pair&lt;int, DataDictionary&gt; _q1;
  
  DataDictionary dd1;
  dd1.i = 0;
  dd1.version = "ver1";
  _p1.insert(_q1(0, dd1));
  
  DataDictionary dd2;
  dd2.i = 0;
  dd2.version = "ver2";
  _p1.insert(_q1(1, dd2));
  
  DataDictionary DD = _p1.find[1];    //error C3867: 'std::_Tree&lt;std::_Tmap_traits&lt;_Kty,_Ty,_Pr,_Alloc,false&gt;&gt;::find': non-standard syntax; use '&amp;' to create a pointer to member
  </code></pre>
  
  <p>Even if I decide to change my std::map and use the following, I am getting the same error :</p>
  
  <pre><code>std::map&lt;std::string, DataDictionary&gt; _p1;
  DataDictionary DD = _p1.find["1"]; //ERROR
  </code></pre>
  
  <p>I am trying to use map with the DataDictionary structure, and use <code>_p1.find["1"]</code> syntax to access the elements, as I am assuming that this approach will be faster than declaring iterator to the map, and then use find(). Please help. Thanks,</p>