diff --git a/include/stdplus/net/addr/ip.hpp b/include/stdplus/net/addr/ip.hpp
index c35fb44..d03f76f 100644
--- a/include/stdplus/net/addr/ip.hpp
+++ b/include/stdplus/net/addr/ip.hpp
@@ -379,6 +379,16 @@
 using InAnyAddrV = std::variant<In4Addr, In6Addr>;
 }
 
+struct InAnyAddr;
+
+template <typename Addr>
+concept InAddr = std::same_as<Addr, In4Addr> || std::same_as<Addr, In6Addr> ||
+                 std::same_as<Addr, InAnyAddr>;
+
+template <typename Addr>
+concept InAddrLike = InAddr<Addr> || std::same_as<Addr, in_addr> ||
+                     std::same_as<Addr, in6_addr>;
+
 struct InAnyAddr : detail::InAnyAddrV
 {
     constexpr InAnyAddr(in_addr a) noexcept : detail::InAnyAddrV(In4Addr{a}) {}
@@ -386,7 +396,8 @@
     constexpr InAnyAddr(in6_addr a) noexcept : detail::InAnyAddrV(In6Addr{a}) {}
     constexpr InAnyAddr(In6Addr a) noexcept : detail::InAnyAddrV(a) {}
 
-    constexpr bool operator==(auto rhs) const noexcept
+    template <InAddrLike T>
+    constexpr bool operator==(T rhs) const noexcept
     {
         return variantEqFuzzy(*this, rhs);
     }
@@ -421,10 +432,6 @@
     }
 };
 
-template <typename Addr>
-concept InAddr = std::same_as<Addr, In4Addr> || std::same_as<Addr, In6Addr> ||
-                 std::same_as<Addr, InAnyAddr>;
-
 namespace detail
 {
 
diff --git a/test/net/addr/ip.cpp b/test/net/addr/ip.cpp
index 2133d3e..2ce2580 100644
--- a/test/net/addr/ip.cpp
+++ b/test/net/addr/ip.cpp
@@ -221,6 +221,8 @@
     EXPECT_EQ("ff::", tsh(In6Addr{0, 0xff}));
 
     EXPECT_EQ("a ff00:: b", fmt::format("a {} b", InAnyAddr{In6Addr{0xff}}));
+    EXPECT_NE("0.0.0.0"_ip, std::optional<InAnyAddr>());
+    EXPECT_EQ("0.0.0.0"_ip, std::optional<InAnyAddr>(In4Addr{}));
 }
 
 TEST(Loopback, In4Addr)
