diff --git a/include-fd/stdplus/fd/gmock.hpp b/include-fd/stdplus/fd/gmock.hpp
index 7b70fd8..2349e44 100644
--- a/include-fd/stdplus/fd/gmock.hpp
+++ b/include-fd/stdplus/fd/gmock.hpp
@@ -23,7 +23,7 @@
     MOCK_METHOD(void, truncate, (off_t size), (override));
     MOCK_METHOD(void, bind, (std::span<const std::byte> sockaddr), (override));
     MOCK_METHOD(void, listen, (int backlog), (override));
-    MOCK_METHOD((std::tuple<std::optional<int>, std::span<std::byte>>), accept,
+    MOCK_METHOD((std::optional<std::tuple<int, std::span<std::byte>>>), accept,
                 (std::span<std::byte> sockaddr), (override));
     MOCK_METHOD(void, setsockopt,
                 (SockLevel level, SockOpt optname,
diff --git a/include-fd/stdplus/fd/impl.hpp b/include-fd/stdplus/fd/impl.hpp
index 9d5acaf..bd8c4dc 100644
--- a/include-fd/stdplus/fd/impl.hpp
+++ b/include-fd/stdplus/fd/impl.hpp
@@ -21,7 +21,7 @@
     void truncate(off_t size) override;
     void bind(std::span<const std::byte> sockaddr) override;
     void listen(int backlog) override;
-    std::tuple<std::optional<int>, std::span<std::byte>>
+    std::optional<std::tuple<int, std::span<std::byte>>>
         accept(std::span<std::byte> sockaddr) override;
     void setsockopt(SockLevel level, SockOpt optname,
                     std::span<const std::byte> opt) override;
diff --git a/include-fd/stdplus/fd/intf.hpp b/include-fd/stdplus/fd/intf.hpp
index 479fcc0..c4e2d7b 100644
--- a/include-fd/stdplus/fd/intf.hpp
+++ b/include-fd/stdplus/fd/intf.hpp
@@ -131,7 +131,7 @@
     virtual void truncate(off_t size) = 0;
     virtual void bind(std::span<const std::byte> sockaddr) = 0;
     virtual void listen(int backlog) = 0;
-    virtual std::tuple<std::optional<int>, std::span<std::byte>>
+    virtual std::optional<std::tuple<int, std::span<std::byte>>>
         accept(std::span<std::byte> sockaddr) = 0;
     virtual void setsockopt(SockLevel level, SockOpt optname,
                             std::span<const std::byte> opt) = 0;
diff --git a/include-fd/stdplus/fd/ops.hpp b/include-fd/stdplus/fd/ops.hpp
index e388dae..4d0b01a 100644
--- a/include-fd/stdplus/fd/ops.hpp
+++ b/include-fd/stdplus/fd/ops.hpp
@@ -114,12 +114,12 @@
 
 inline std::optional<DupableFd> accept(Fd& fd)
 {
-    auto ret = std::get<0>(fd.accept(std::span<std::byte>{}));
+    auto ret = fd.accept(std::span<std::byte>{});
     if (!ret)
     {
         return std::nullopt;
     }
-    return DupableFd(std::move(*ret));
+    return DupableFd(std::move(std::get<0>(*ret)));
 }
 
 template <typename Opt>
diff --git a/src/fd/impl.cpp b/src/fd/impl.cpp
index 40ce7b3..55efbab 100644
--- a/src/fd/impl.cpp
+++ b/src/fd/impl.cpp
@@ -123,7 +123,7 @@
     CHECK_ERRNO(::listen(get(), backlog), "listen");
 }
 
-std::tuple<std::optional<int>, std::span<std::byte>>
+std::optional<std::tuple<int, std::span<std::byte>>>
     FdImpl::accept(std::span<std::byte> sockaddr)
 {
     socklen_t len = sockaddr.size();
@@ -133,7 +133,7 @@
     {
         if (errno == EAGAIN || errno == EWOULDBLOCK)
         {
-            return {};
+            return std::nullopt;
         }
         throw util::makeSystemError(errno, "accept");
     }
