- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
于是我尝试使用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/
我正在尝试检查一个字符串以查看它是否满足所有要求,而这些要求之一是没有'*'或'%'。使用std::any_of检查整个字符串,并使其与isupper和islower一起使用,但无法为这2个字符弄清楚
这是我的代码: #include #include using namespace std; void input_guess_number(int guess_number[]){ in
我有一个过滤函数列表。如果这些函数中的任何一个返回“true”,我就不应该进一步处理事件。 std::any_of 似乎适合这个用例,但我希望保证过滤器函数按照它们添加到我的列表中的顺序被调用(因为它
于是我尝试使用Boost Hana的any_of方法,但是和实现中的描述不同的是,它仍然调用最先满足predicate的元素之后的元素。这是已知错误吗? 这是一个 MCVE : #include #
C++11 介绍 any_of至algorithm秒。 这似乎与 find_if 完全一样. 假设我有一个仿函数:function foo;还有一个数组:vector bar; 这两个调用似乎做了完全
我想检查 vector 中是否存在某个值。它最有可能位于 vector 的末尾,使用像这样的反向迭代器是否有意义: std::vector v{}; //... add a lot of values
考虑这段代码: #include #include #include struct Animal { virtual ~Animal() = default; }; struct Dog : A
我有一个需要运行 MongoDB 查询的要求,如下所示: db.collection.find({ $or : [{"field1" : "value1"}, {"field2" : "value2"
给定以下代码, std::vector numbers = {1, 2, 3, 4, 5}; std::any_of(std::begin(numbers), std::end(numbers),
所以我正在尝试使用 std::any_of()函数,但是 C++ Builder 6 说有一个错误: [C++ Error] Unit1.cpp(93): E2316 'any_of' is not
我无法在 for 循环 和 std::any_of 之间做出决定,例如: QString fileName = "Whatever"; // might contain a key-string w
我将 MongoDB 与 Mongoid 一起使用,并在我们查看权重等之前尝试将基本搜索作为占位符。any_of 方法似乎正在查找我的嵌入式文档,但不是那些由关系联系起来。有谁知道 any_of 是否
我遇到了 mongoid any_of 的问题。我正在尝试查找一个字段 > 0 或另一个字段 > 0 的对象。我的查询是: Model.any_of(best_friend_method.gt =>
一段工作代码: std::vector::iterator it = std::find_if(intersections.begin(), intersections.end(), [&](cons
我有一个与 STL 算法相关的问题。 来自 http://www.cplusplus.com/reference/algorithm/我看到 any_of()、all_of() 和 none_of()
假设我有一个std::vector并想知道它是否包含 3或者将迭代器获取到 3 。 我不想使用std::set或std::multiset无论出于何种原因。 我想在 std::execution::p
我正在使用带有太阳黑子 solr 的 rails 4.0。我希望这样做: (read_flag IS TRUE) OR ( (read_flag IS NIL) AND (fulltext param
我有以下类(class): Class Foo { public: bool operator ==(const Foo& f); ... private: set> poin
这是我最近在 VS2012 中编写的一些代码: ///Lambda: Returns true if the field is significant within a baseline co
我有这样的设置模型数据 [52] pry(main)> Setting.all.to_a => [#, #, #, #] 现在我想要一组具有特定类(class)的
我是一名优秀的程序员,十分优秀!