title: C++: Stack's push() vs emplace()
body: <p>Trying to understand the difference between using <code>push()</code> or <code>emplace()</code> for <code>std::stack</code>.   </p>
  
  <p>I was thinking that if I create a <code>std::stack&lt;int&gt;</code>, then I'd use <code>push()</code> because integer is a primitive type and there is nothing for <code>emplace()</code> to construct. </p>
  
  <p>However, if I was creating <code>std::stack&lt;string&gt;</code> then I'd choose <code>emplace()</code> because <code>std::string</code> is an object. </p>
  
  <p>Is this correct usage?</p>