【问题标题】:Why do std::ranges algorithms lack parallel overloads (taking an execution policy parameter)?为什么 std::ranges 算法缺少并行重载(采用执行策略参数)?
【发布时间】:2020-12-13 23:38:21
【问题描述】:

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

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

【问题讨论】:

  • 可能他们没时间了,我记得 Niebler 说过范围已经很大,而且不是 range-v3 中的所有内容都在 C++20 中...

标签: c++ parallel-processing iterator c++20 std-ranges


【解决方案1】:

从 Eric Niebler(和其他作者)的众多答案(在会谈期间和他的 github cmets 上)得出结论,他们(委员会和作者)只是没时间了。该提案已经很大(请注意,它大量引用了<concepts> 提案的事实)并且添加更多内容将产生无法将任何东西从<ranges> 运送到 的风险。

并行重载并不是唯一错过的事情。各种views 不存在(都是由于时间不足 一些语义问题(看着你,zip)),actions 为零,<numeric> 没有任何内容。

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

【讨论】:

    猜你喜欢
    • 2020-01-11
    • 1970-01-01
    • 2022-07-06
    • 2010-12-27
    • 1970-01-01
    • 2022-10-14
    • 2020-02-04
    • 2021-05-11
    • 1970-01-01
    相关资源
    最近更新 更多