是否有任何实验或第三方库功能,允许传递一个序列(或包装集)的期货/承诺?考虑一个例子:
struct header {};
struct body {};
struct footer {};
using footer_future = std::future<footer>;
using body_future = std::future<std::tuple<body, footer_future>>;
using page_future = std::future<std::tuple<header, body_future>>;
page_future generate_page() {
// asynchronously generate a page
// and return each piece via a promise right after it is generated
}
int main() {
// unwrapping the sequence of futures.
// next future is available only when successfully got the previous one
auto page_fut = generate_page();
auto [h, body_fut] = page_fut.get();
auto [b, footer_fut] = body_fut.get();
auto f = footer_fut.get();
}
我想象它可能是future_sequence<header, body, footer>
,其中get()
返回下一部分。
或者这个概念有一些根本性的缺陷?
虽然我没有尝试过这个代码,但我没有看到任何根本的缺陷。
使用一些模板元编程和变量,你应该能够做到这一点。