// This file is part of Desktop App Toolkit, // a set of libraries for developing nice desktop applications. // // For license and copyright information please follow this link: // https://github.com/desktop-app/legal/blob/master/LEGAL // #pragma once #include namespace rpl { template < typename Creator, typename Value = typename decltype(std::declval()())::value_type, typename Error = typename decltype(std::declval()())::error_type> inline auto deferred(Creator &&creator) { return make_producer([ creator = std::forward(creator) ](const auto &consumer) mutable { return std::move(creator)().start_existing(consumer); }); } } // namespace rpl