【发布时间】:2019-08-11 13:32:22
【问题描述】:
引用自cppref
std::when_any定义如下:
template<class Sequence>
struct when_any_result
{
std::size_t index;
Sequence futures;
};
template<class InputIt>
auto when_any(InputIt first, InputIt last)
-> future<when_any_result<std::vector<
typename std::iterator_traits<InputIt>::value_type>>>;
template<class... Futures>
auto when_any(Futures&&... futures)
-> future<when_any_result<std::tuple<std::decay_t<Futures>...>>>;
让我困惑的是为什么最后一个表单不使用std::vector作为其结果类型?
结果包含一个index 字段,可用于检索准备好的未来。对我来说,std::tuple 在运行时很难通过index 进行迭代,但std::vector 很容易做到。
这样的设计有什么理由吗?
【问题讨论】:
-
“这样的设计有什么理由吗?” - 很可能是。没有理由的事情很少会成为标准。
标签: c++ multithreading concurrency standards