title: what is the purpose of std::set<VALUE, std::owner_less<VALUE>>?
body: <p>I'm trying to dissect this websocket++ example <a href="https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp" rel="nofollow noreferrer">https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp</a></p>
  
  <p>At line 126, there is <code>typedef std::set&lt;connection_hdl,std::owner_less&lt;connection_hdl&gt;&gt; con_list;</code>.  I'm wondering why it isn't merely <code>typedef std::set&lt;connection_hdl&gt; con_list;</code>.</p>
  
  <p>I've read <a href="https://stackoverflow.com/questions/54142/how-does-the-comma-operator-work">How does the Comma Operator work</a> and <a href="http://en.cppreference.com/w/cpp/memory/owner_less" rel="nofollow noreferrer">http://en.cppreference.com/w/cpp/memory/owner_less</a> but I'm not sure what the purpose is.</p>
  
  <p>What is actually stored in the <code>std::set</code>?  What does <code>std::owner_less</code> actually do?  What is the purpose of making a container with this structure instead of storing the <code>connection_hdl</code>s themselves?</p>