Std::all_of不接受类成员函数作为只有一个参数的函数
std::all_of not accepting class member function as function with 1 argument
我不知道我在std::all_of
呼叫中做错了什么。
I have a class Statistics:
class Statistics {
public:
bool isDataSet() const { return m_data.size() > 0; }
private:
std::vector<double> m_data;
};
Statistics类的每个实例对应于一个特定的对象。
在另一个文件中的另一个函数中,我希望仅在所有Statistics
实例中初始化数据时才显示统计信息。我想以如下方式使用std::all_of
函数:
if( std::all_of(m_stats.begin(), m_stats.end(), &Statistics::isDataSet) ) {
...
}
where std::vector<Statistics*> m_stats.
编译器报告错误,在"谓词项不计算为1个参数的函数"。据我所知,每个类成员传递这个指针作为第一个参数,所以Statistics::isDataSet()
实际上应该是一个只有一个参数的函数。但std::all_of
认为这是错误的。
我假设Statistics::isDataSet()
应该被接受为std::all_of()
中有1个参数的函数,我错了吗?
use
std::bind(&Statistics::isDataSet, std::placeholders::_1)
或
[](const Statistics& s) { return s.isDataSet(); }
代替&Statistics::isDataSet
调用all_of
。后者期望一个可调用的类型(作为谓词),并将一个Statistics
的实例传递给它。指定成员函数w/o实例显然不足以调用
相关文章:
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- C++中的高效循环缓冲区,它将被传递给C样式数组函数参数
- 当从函数参数中的临时值调用复制构造函数时
- 如何从"decltype()"获取函数参数的数量<funtion>?
- 如何将lambda作为模板类的成员函数参数
- 模板参数推导失败,函数参数/参数不匹配
- 如何在C++中将迭代器作为函数参数传递
- 将函数参数"const char*"转换为"std::string_view"是
- C++ 如何将数组值解压缩为函数参数
- 主函数参数的属性
- 具有两个间接寻址运算符 (C++) 的函数参数的用途
- "Warning: Comma within array index expression"但逗号分隔函数参数
- 如何定义在用作函数参数时工作的类模板的转换
- 将函数参数完美转发到函数指针:按值传递呢?
- 为什么我不能将引用作为 std::async 的函数参数传递
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以就地构造一个固定大小的数组作为函数参数?
- 接受模板作为函数参数
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- Arduino 函数参数