weak_ptr smart shared_ptr pointer example create c++ set std owner

c++ - smart - unique pointer



¿Cuál es el propósito de std:: set<VALUE, std:: owner_less<VALUE>>? (1)

Esto no tiene nada que ver con el operador de coma. Un set<T> requiere que T sea ​​menos que comparable, es decir, el operator < debe definirse para T La razón para esto es que el conjunto mantiene sus elementos de una manera ordenada (a través de un tipo de árbol u otro). Puede suministrar un conjunto con un segundo argumento de plantilla, un functor que compara dos elementos para que el conjunto pueda usar esa comparación. std::owner_less es una plantilla de predicado que opera en punteros compartidos y débiles y realiza pedidos basados ​​en el propietario (en lugar de en valores).

Estoy tratando de diseccionar este ejemplo de websocket ++ https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp

En la línea 126, hay typedef std::set<connection_hdl,std::owner_less<connection_hdl>> con_list; . Me pregunto por qué no es meramente typedef std::set<connection_hdl> con_list; .

He leído cómo funciona el operador de coma y http://en.cppreference.com/w/cpp/memory/owner_less pero no estoy seguro de cuál es el propósito.

¿Qué se almacena realmente en el std::set ? ¿Qué hace std::owner_less realidad? ¿Cuál es el propósito de hacer un contenedor con esta estructura en lugar de almacenar los connection_hdl s?