title: c++ priority_queue push/emplace without temporary object creation
body: <p>I have learned that <code>emplace_back</code> method pushes objects into vector without temporary object creation. However, I could not find a way of achieving this for priority_queue either using <code>push</code> or <code>emplace</code>. Is there an efficient way to achieve this? or using boost's shared_ptr like containers is good in terms of performance. </p>