gpt4 book ai didi

c++ - 没有执行策略的 std::transform_reduce 是否可移植?

转载 作者:行者123 更新时间:2023-12-02 00:52:04 25 4
gpt4 key购买 nike

我可以在 Fedora 和 Ubuntu 上使用 gcc 9.2.1 编译以下代码(使用 std::transform_reduce),但尝试在 clang see godbolt 上编译失败,并且我收到一份报告,某些 FSF 版本的 gcc 9.2.1 也拒绝编译代码,需要 std::execution_policy 作为 std::的第一个参数变换减少

#include <vector>
#include <algorithm>
#include <numeric>

auto brokenvector(std::vector<int> const& a, std::vector<int> const& b)
{
return std::transform_reduce(cbegin(a), cend(a), cbegin(b), 0, std::plus<>{},std::multiplies<>{});
}

我特别不能在这里使用 std::execution_policy ,并且 cppreference C++ 草案标准文档 n4659 显示了没有执行策略的重载。

我是否踏入了某种政治雷区,其中一半可用的编译器拒绝实现该标准,或者代码不正确?

最佳答案

这是 libstdc++ 与 libc++ 的问题。 libc++ 实现 the function您可以在 live example 中使用 -stdlib=libc++ 看到它与 godbolt 上的 clang 一起工作。 。 gcc 现在在 trunk 中实现它,但当前发布的版本没有。该功能已添加于 this commit .

关于c++ - 没有执行策略的 std::transform_reduce 是否可移植?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59995584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com