auto get_future() { return promise_.get_future(); }
#ifdef MULTITHREADED threads.join_all(); #endif // MULTITHREADED int value = result.get(); // Attach breakpoint here ,-) return value; } TEST_CASE("Basic future_t and promise_t tests", "[future_t & promise_t]") { SECTION("The future_t is available after the value was passed to the promise") { promise_t<bool> promise; auto future = promise.get_future(); REQUIRE_FALSE(future.is_ready()); promise.set_value(true); REQUIRE(future.is_ready()); CHECK(future.get()); } SECTION("Futures are chainable") { promise_t<int> promise; auto future = promise.get_future().then( [](future_t<int> future) { REQUIRE(future.is_ready()); CHECK(future.get() == 100); return true;
delayed_thread(op_t &&op) : m_thread([op = decay_copy(std::forward<op_t>(op)), &m_promise = m_promise]() { m_promise.get_future().wait(); op(); }) {}