C ++ ptr_fun没有找到void参数化函数

时间:2013-05-19 11:35:44

标签: c++ function

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

代码:

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

功能:

bool funct1()      
{                  
    return false;     
}

错误:

  

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

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

如何使用void参数包装函数?

1 个答案:

答案 0 :(得分:3)

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

bool funct1();不是一元函数,它是一个无效函数。没有void参数这样的东西。从C继承的语法bool funct1(void);只是一种奇怪的说法,根本就没有参数。