我尝试使用std :: ptr_fun来包装我的函数,但是当我尝试使用void参数和bool返回类型包装函数时,我最终得到一个错误:
代码:
std::function<bool()> cr = std::not1(std::ptr_fun(&funct1));
功能:
bool funct1()
{
return false;
}
错误:
错误:没有匹配函数来调用'ptr_fun(bool(*)())'
但每当我将参数更改为int时,问题似乎都会消失。
如何使用void参数包装函数?
答案 0 :(得分:3)
std::ptr_fun
仅适用于一元函数:只有一个参数的函数。
bool funct1();
不是一元函数,它是一个无效函数。没有void参数这样的东西。从C继承的语法bool funct1(void);
只是一种奇怪的说法,根本就没有参数。