如何使用新的C ++ 17执行策略?

威利山羊

cppreference.com上阅读了std :: algorithm文档,并且注意到了很多我还没有使用过的很棒的东西上的C ++ 17标签。我最关注的是新的执行策略。我从阅读它们中学到的是,仅通过指定执行策略,我就可以使任何想要多线程的循环。for_each

例如,我有一个程序可以输出带有2D图形的图像。

int main(){
    std::for_each(
        img.buffer().begin(),
        img.buffer().end(),
        renderer(
            {-0.5, 0.0, 2.666, 2.0, M_PI / 2.0, 0.0},
            img,
            16
        )
    );
    fout << img;
}

如果我想使该程序成为多线程,则应该可以用一行完成。

int main(){
    std::for_each(
        std::execution::par_unseq, // c++17 feature
        img.buffer().begin(),
        img.buffer().end(),
        renderer(
            {-0.5, 0.0, 2.666, 2.0, M_PI / 2.0, 0.0},
            img,
            16
        )
    );
    fout << img;
}

但是,当我第一次尝试(with g++ -std=c++17)时,我告诉我一个错误‘std::execution’ has not been declared,所以我尝试添加,#include <execution>但它说execution: No such file or directory我也尝试过#include<experimental/algorithm>替代,#include<algorithm>但得到的结果相同。如何使用这项新功能?

Yakk-亚当·内夫罗蒙特

尚未完成。并且各种编译器尚未完全实现它。

-std=c++17 表示“将完成的所有C ++ 17都给我”,而不是“成为完全有效的C ++ 17编译器”。

目前,编译器和/或标准库不支持此功能。请在几周/几月/几年后再检查一次。

没有公认的“如果您完全支持C ++ 17,请给我,否则给我一个错误”标志,您可以将其传递给编译器;部分是因为它几乎没有实际用途。如果他们提供的C ++ 17子集足够,您就赢了。而且,如果您需要一个完全兼容的编译器,则特定版本的编译器将不知道它们是否存在错误,因此您无法以任何方式信任该标志,而必须针对编译器版本对其进行测试。而且,如果您已经知道哪个版本的编译器具有足够有效的C ++ 17,则不需要标记即可告诉您。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何*编写*具有并行执行策略的C++17算法

如何通过源代码中的执行策略检测C ++ 17扩展内存管理算法的可用性?

C ++中的执行策略

如何使用 c# 执行 powershell 脚本并设置执行策略?

c ++ 20执行策略类型

如何忽略SSL策略以执行HTTPClient请求?

如何执行密码复杂度策略?

动态控制C ++的执行策略类型

如何成功更改执行策略并启用PowerShell脚本执行

如何在执行 Polly 策略时包含 return 语句?

我可以在并行执行策略中使用std :: transform吗?

执行策略与何时使用它们之间的区别

如何使用Visual Studio Code创建新的可执行C#项目

如何使用 COR 策略通过浏览器向 AWS API 网关执行 Ajax 请求?

如何使用AWSElasticBeanstalkFullAccess策略解决“您无权执行'ec2:DescribeSubnets'操作”

unseq 执行策略是否要求迭代器的 value_type 为 Cpp17CopyAssignable?

如何在C ++(c ++ 11 / c ++ 17)中执行元组算术运算?

用于强制执行新EBS卷的AWS IAM策略已加密

C++17/20 - 使用 <filesystem> 确定文件是否可执行

如何在VS2017中的策略中强制执行代码分析检查?

如何在VPC中为AWS Lambda设置IAM策略以解决错误“您无权执行:CreateNetworkInterface”。

如何在较慢或非常繁忙的CPU机器上禁用“执行策略更改” powershell消息?

如何在git中强制执行“文件名中没有空格”策略?

如何在S3存储桶策略中执行“或”条件?

如何确定解决此错误:.NET Framework执行由于内存不足而被升级策略中止了?

执行自定义SignUpSignIn策略后如何返回PolicyId声明?

Spring Keycloak适配器权限策略执行器。如何设定

如何在node.js应用程序的keycloak中启用策略强制执行?

如何在PowerShell中不提示的情况下强制执行会话级执行策略?