此代码段取自比特币代码库。
struct CombinerAll
{
typedef bool result_type;
template<typename I>
bool operator()(I first, I last) const
{
while (first != last) {
if (!(*first)) return false;
++first;
}
return true;
}
};
这在这里使用
boost::signals2::signal<bool (CNode*), CombinerAll> ProcessMessages;
任何c ++专家都能帮我理解上面的内容(CombinerAll
和ProcessMessages
提升信号)吗?问这个因为升级库对我来说非常不直观。
答案 0 :(得分:2)
从功能:
if (!(*first)) return false;
如果取消引用指针/迭代器/对象,[first, last)
范围内的任何元素求值为false
,则该函数返回false
。否则,它返回true
。
示例测试代码:
int main()
{
std::string sa = "abc";
std::vector<int> va = {1, 1, 1};
std::vector<int> vb = {1, 0, 2};
std::cout << std::boolalpha;
std::cout << CombinerAll()(sa.begin(), sa.end()) << std::endl;
std::cout << CombinerAll()(va.begin(), va.end()) << std::endl;
std::cout << CombinerAll()(vb.begin(), vb.end()) << std::endl;
return 0;
}
输出:
true
true
false
boost::signals2::signal
的文档可在Boost website找到。
至于ProcessMessages
的作用,你必须咨询编写该代码的人。