4

我尝试使用 std::ptr_fun 来包装我的函数,但是当我尝试使用 void 参数和 bool 返回类型来包装函数时,我最终得到一个错误:

代码:

std::function<bool()> cr = std::not1(std::ptr_fun(&funct1));

功能:

bool funct1()      
{                  
    return false;     
}

错误:

错误:没有匹配函数调用'ptr_fun(bool (*)())'

但是每当我将参数更改为 int 时,问题似乎就消失了。

如何用 void 参数包装函数?

4

1 回答 1

3

std::ptr_fun仅适用于一元函数:只有一个参数的函数。

bool funct1();不是一元函数,它是一个零函数。没有 void 参数之类的东西。从 C 继承的语法bool funct1(void);只是说根本没有参数的一种奇怪方式。

于 2013-05-19T12:40:15.463 回答