为什么 std::ranges 算法缺少并行重载(采用执行策略参数)?

SWd*_*WdV 10 c++ parallel-processing iterator c++20 std-ranges

C++ 算法库中的许多函数都有重载,采用类型为 的参数ExecutionPolicy,例如std::copy. 但是,我注意到std::ranges命名空间中的相应函数没有这些并行重载。这很不幸,因为这意味着在许多情况下,非范围变体将更有用。

这是什么原因?是否有向std::ranges命名空间添加并行重载的建议?

Fur*_*ish 18

从 Eric Niebler(和其他作者)的众多答案(在演讲中和他的 github 评论中)得出的结论是,他们(委员会和作者)根本没有时间了。该提案已经很大(请注意,它大量引用了提案<concepts>),并且添加更多内容将产生不将任何内容从 c++20 传送到<ranges>

并行超载并不是唯一错失良机的事情。各种都views缺席(由于缺乏时间一些语义问题(看着你,zip)),有零actions并且没有任何内容<numeric>被范围化。

<ranges>肯定会进一步发展,但完善提案需要时间。我们无法预测未来,但如果<ranges>没有变得更大,我会感到非常惊讶。