boost 1.76 版本及以下兼容实现:hash<boost::asio::ip::address_v4>、hash<boost::asio::ip::address_v6>、hash<boost:

为了保证 boost 库版本的代码兼容性,这是为了在多个平台上面跨平台编译的兼容性,所以我们通常需要去兼容打上这些补丁。

namespace std {
#if BOOST_VERSION < 107600
    template <>
    struct hash<boost::asio::ip::address_v4> {
    public:
        std::size_t operator()(const boost::asio::ip::address_v4& addr) const noexcept {
            return std::hash<unsigned int>()(addr.to_uint());
        }
    };

    template <>
    struct hash<boost::asio::ip::address_v6> {
    public:
        std::size_t operator()(const boost::asio::ip::address_v6& addr) const noexcept {
            const boost::asio::ip::address_v6::bytes_type bytes = addr.to_bytes();
            std::size_t result = static_cast<std::size_t>(addr.scope_id());
            combine_4_bytes(result, &bytes[0]);
            combine_4_bytes(result, &bytes[4]);
            combine_4_bytes(result, &bytes[8]);
            combine_4_bytes(result, &bytes[12]);
           
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值