我正在分析这个websocket++示例 https://github.com/zaphoyd/websocketpp/blob/experimental/examples/broadcast_server/broadcast_server.cpp
第126行有typedef std::set<connection_hdl,std::owner_less<connection_hdl>> con_list;
。我想知道为什么不直接使用typedef std::set<connection_hdl> con_list;
。
我已经阅读了逗号运算符如何工作和http://en.cppreference.com/w/cpp/memory/owner_less,但我不确定其目的。
std::set
中实际存储的是什么?std::owner_less
实际上是做什么的?用这种结构创建容器的目的是什么,而不是直接存储连接句柄connection_hdl
本身?
std::owner_less
的页面应直接回答您的问题。 - ildjarnstd::set
接受多个模板参数,但只有第一个是明确需要的;如果您不定义它们,则其余参数具有默认类型。第二个参数是用于排序的二元函数。 - Collin Dauphineeconnection_hdl
是一个std::weak_ptr<void>
。 - Jesse Goodstd::weak_ptr<>
没有operator<
,所以它没有一个特殊的比较器就不能编译。;-] - ildjarn