gpt4 book ai didi

c++ - Boost Hana any_of?

转载 作者:太空狗 更新时间:2023-10-29 20:53:42 26 4
gpt4 key购买 nike

于是我尝试使用Boost Hana的any_of方法,但是和实现中的描述不同的是,它仍然调用最先满足predicate的元素之后的元素。这是已知错误吗?

这是一个 MCVE :

#include <iostream>
#include <boost/hana.hpp>

int main() {
auto t = boost::hana::tuple_t<int, double, float>;
boost::hana::any_of(t, [](auto) { std::cout << "Called\n"; return true; });
}

输出:

Called
Called

最佳答案

这是一个错误;感谢您找到它。谓词总是比绝对必要的多评估一次。该错误由 this commit 修复,它将进入 Boost 1.64.0。

话虽这么说,Hana 的文档明确禁止您依赖它(并且还会对您发送给算法的函数产生副作用):http://boostorg.github.io/hana/#tutorial-algorithms-effects .因此,虽然从性能的角度来看我认为它是一个错误,但严格来说它并不是一个错误,因为它不会违反图书馆给你的契约(Contract)。

我之所以不能把这部分约定成函数的契约,是因为它可能会阻止一些实现策略生效,我想保留这个自由。如果用例令人信服,我会更认真地考虑它,但事实似乎并非如此。

关于c++ - Boost Hana any_of?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42012512/

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