}
 
   using pass_further = typename Errorator::pass_further;
-  using ready_future_marker = ready_future_marker;
-  using exception_future_marker = exception_future_marker;
 };
 
 template <typename InterruptCond,
     interruptible_future_detail<InterruptCond, seastar::future<T>>&& fut)
     : core_type(static_cast<seastar::future<T>&&>(fut)) {}
 
+  template <class... A>
+  [[gnu::always_inline]]
+  interruptible_future_detail(ready_future_marker, A&&... a)
+    : core_type(::seastar::make_ready_future<typename core_type::value_type>(
+                 std::forward<A>(a)...)) {
+  }
+  [[gnu::always_inline]]
+  interruptible_future_detail(exception_future_marker, ::seastar::future_state_base&& state) noexcept
+    : core_type(::seastar::futurize<core_type>::make_exception_future(std::move(state))) {
+  }
+  [[gnu::always_inline]]
+  interruptible_future_detail(exception_future_marker, std::exception_ptr&& ep) noexcept
+    : core_type(::seastar::futurize<core_type>::make_exception_future(std::move(ep))) {
+  }
+
   template<bool interruptible = true, typename ValueInterruptCondT, typename ErrorVisitorT,
           std::enable_if_t<!interruptible, int> = 0>
   [[gnu::always_inline]]