首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >增强Hana any_of?

增强Hana any_of?
EN

Stack Overflow用户
提问于 2017-02-02 21:21:13
回答 1查看 246关注 0票数 3

因此,我尝试使用Boost Hana的any_of方法,但与实现中的描述不同,它仍然在首先满足谓词的元素之后调用元素。这是个通晓的虫子吗?

这是一个MCVE

代码语言:javascript
复制
#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; });
}

输出:

代码语言:javascript
复制
Called
Called
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-03 21:59:51

这是个bug,谢谢你找到它。谓词总是被重新计算一次,而不是严格必要的。这个bug是由此承诺修复的,它将进入Boost 1.64.0。

,Hana的文档特别禁止您依赖这个(并且在发送给算法的函数中也有副作用):http://boostorg.github.io/hana/#tutorial-algorithms-effects。因此,虽然我从性能角度来看它是一个bug,但严格地说,它并不是一个bug,因为它没有违背库给您的契约。

我之所以不能将函数的这一部分作为契约,是因为它可能会阻止某些实现策略的有效性,而我希望保持这种自由。如果用例是令人信服的,我会更认真地考虑它,但它似乎不是。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42012512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档