Fix out-of-bounds address_v4::broadcast() return value on 64-bit systems.
diff --git a/asio/include/asio/ip/impl/address_v4.ipp b/asio/include/asio/ip/impl/address_v4.ipp
index ca42f18..b0e1c31 100644
--- a/asio/include/asio/ip/impl/address_v4.ipp
+++ b/asio/include/asio/ip/impl/address_v4.ipp
@@ -140,7 +140,7 @@
 
 address_v4 address_v4::broadcast(const address_v4& addr, const address_v4& mask)
 {
-  return address_v4(addr.to_ulong() | ~mask.to_ulong());
+  return address_v4(addr.to_ulong() | (mask.to_ulong() ^ 0xFFFFFFFF));
 }
 
 address_v4 address_v4::netmask(const address_v4& addr)