From the linked review feedback ("Some thoughts on Corosio", Boost mailing list, July 2026):
I noticed that there's no generic ip_address type capable of holding either an IPv4 or an IPv6 address. The closest equivalent is corosio::endpoint, which also hold a port and is therefore not a suitable replacement.
Source: https://lists.boost.org/archives/list/boost%40lists.boost.org/message/KHNY67ZNXFWT54EIWDOJPHN4KO6KJLN4 (referenced by the Boost review result, September 2026).
endpoint already holds both ipv4_address and ipv6_address with a discriminator, so this is an extraction rather than an addition: ip_address comes out of endpoint, and endpoint reduces to ip_address + port.
Core (this issue):
Follow-ons (separate issues once the core lands):
- Deduplicate the multicast socket options (
join_group/join_group_v6, multicast_loop/multicast_loop_v6, ...) behind ip_address-taking options
- Host-only resolution returning
ip_addresses (resolver results currently can only express address + port)
From the linked review feedback ("Some thoughts on Corosio", Boost mailing list, July 2026):
Source: https://lists.boost.org/archives/list/boost%40lists.boost.org/message/KHNY67ZNXFWT54EIWDOJPHN4KO6KJLN4 (referenced by the Boost review result, September 2026).
endpointalready holds bothipv4_addressandipv6_addresswith a discriminator, so this is an extraction rather than an addition:ip_addresscomes out ofendpoint, andendpointreduces toip_address+ port.Core (this issue):
ip_address: implicit construction fromipv4_address/ipv6_address, family predicates, family-genericis_loopback()/is_multicast()/is_unspecified(), string parsing (address without port), comparisonipv4_address/ipv6_address: prefer aresult/optional style over Asio's throwingbad_address_castis_v4_mapped(),to_v4_mapped(), whether mapped forms compare equal to their v4 form) and centralize the existing ad hoc handling innative/detail/endpoint_convert.hppendpointontoip_address+ port with a singleaddress()accessor; keep the existingipv4_address/ipv6_addressconstructors working via implicit conversion; decide the fate ofv4_address()/v6_address()Follow-ons (separate issues once the core lands):
join_group/join_group_v6,multicast_loop/multicast_loop_v6, ...) behindip_address-taking optionsip_addresses (resolver results currently can only express address + port)