12template <
typename V,
typename E,
typename Func>
29 static_assert(std::is_nothrow_move_constructible_v<Storage>);
35 std::move(
promise).Set(std::current_exception());
38 YACLIB_WARN(
true,
"Your exception will be ignored, you probably move promise too early");
A intrusive pointer to objects with an embedded reference count.
std::decay_t< Func > Storage
YACLIB_NO_UNIQUE_ADDRESS State _func
std::conditional_t< std::is_function_v< std::remove_reference_t< Func > >, Storage, Func > Invoke
void Store(Args &&... args) noexcept(std::is_nothrow_constructible_v< Result< V, E >, Args &&... >)
#define YACLIB_WARN(cond, message)
YACLIB_INLINE void Loop(InlineCore *prev, InlineCore *curr) noexcept
Contract< V, E > MakeContract()
Creates related future and promise.
YACLIB_NO_UNIQUE_ADDRESS Storage storage