【问题标题】:Dynamic control over execution policy type for C++动态控制 C++ 的执行策略类型
【发布时间】:2020-01-05 20:26:28
【问题描述】:

我注意到在 c++ 文档中有一个名为 execution_policy 的类,它可用于动态控制并行类型或将其关闭的事件,目前,我使用的是 GCC 9.2,但找不到此类或相关标头。还注意到here 有用于删除它的更改日志。 为什么需要删除这个有用的类。是否有可以与 GCC 一起使用的替代版本或实验版本。如果不是,那么有效的实施方式是什么?

【问题讨论】:

  • 技术规范是实验性的,有点像Try-Outs,以便将来包含在标准库中。有时,一旦人们在野外对它们进行了试验,它们就达不到期望,并且可以由于多种原因被移除。排序重复:What is C++ Technical Specification?
  • @user4581301 但ExecutionPolicy 是标准的一部分,例如25.7.11(排序)指定采用ExecutionPolicy&& 的重载。这是否意味着标准引入的功能可能需要依赖于使用experimental 命名空间?如果是,这是否意味着experimental 已标准化?如果不是,为什么标准规定了一些完全依赖于非标准行为的东西?
  • @Fureeish No. ExecutionPolicy != execution_policyExecutionPolicy是一个概念;它只是一个模板参数名称。 execution_policy 是一个实际的类型。
  • @Justin 感谢您纠正我 - 这是我的疏忽。但是,我相信这一点仍然成立,不是吗?

标签: c++ g++ c++17 std c++20


【解决方案1】:

动态 execution_policy 被推迟到 C++17(和 20)之后,因为它需要提交 ABI 来表示各种策略。 (只有使用它们的模板,任何客户端都包含自己的副本,适用于它碰巧使用的任何表示。)choose policies dynamically 是可能的,但您不能创建自己的执行策略对象,这些对象可以传递给标准算法(同样,为了未来的规范灵活性)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2012-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    • 2014-07-13
    • 1970-01-01
    相关资源
    最近更新 更多