提升哈娜any_of
Boost Hana any_of?
所以我尝试使用 Boost Hana 的 any_of 方法,但与实现中的描述不同,它仍然在首先满足谓词的元素之后调用元素。这是一个已知的错误吗?
这是一个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 << "Calledn"; return true; });
}
输出:
Called
Called
这是一个错误;感谢您找到它。谓词的计算次数总是比绝对必要的多一次。该错误已通过此提交修复,它将进入 Boost 1.64.0。
话虽如此,Hana 的文档特别禁止您依赖此功能(并且在您发送给算法的函数中也有副作用):http://boostorg.github.io/hana/#tutorial-algorithms-effects。因此,虽然从性能的角度来看,我认为这是一个错误,但严格来说它不是一个错误,因为它不会违反库给你的合同。
我之所以不能使函数的契约成为这部分,是因为它可能会阻止某些实现策略有效,我想保持这种自由。如果用例引人注目,我会更认真地考虑它,但似乎并非如此。
相关文章:
- Usages of std::move
- 使用 [] 运算符时"binding reference of type discards qualifiers"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- 具有变量Number of Arguments的std::函数的矢量
- Capacity of a deque
- 哪些类型可以转换为std::any
- Deprecation of _writeBarrier()
- constexpr begin of a std::array
- 如何调整 std::vector of Eigen::MatrixXd 的大小
- C++ "error: invalid use of void expression"
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 赛通"Cannot take address of memoryview slice"
- C++ Version Of Double.longBitsToDouble
- 收到错误"invalid use of non-static data member 'stu::n' "
- C++ Usage of AsyncCallback
- 错误:"Left of getValue must have class/struct/union"
- Centos7 g++ "to_string is not in a member of std"
- 解决方法:"out of line definition of 'graph' does not match any declaration in 'graph'"
- "local variables at the outermost scope of the function may not use the same name as any parameter"是
- 如何将"Any kind of data"传递给 C++ 中的函数