2013-05-19 20 views
4

我试图使用的std :: ptr_fun来包装我的功能,但是当我尝试换用空参数和布尔返回类型我结束了一个错误的函数:C++ ptr_fun没有找到空参数化功能

代码:

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

功能:

bool funct1()  
{     
    return false;  
} 

错误:

error: no matching function for call to 'ptr_fun(bool (*)())' 

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

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

+3

不推荐使用'ptr_fun'。使用'std :: bind'。 – Pubby

+1

我不能,我的学校编译器还不支持C++ 11,他们对更新它很固执。 –

+2

'boost :: bind'呢?嘿。 – Pubby

回答

1

不是100%肯定,但尝试使用void*作为参数

+0

它的工作!,我仍然好奇它为什么不与无效。 –

+1

+1如果你解释为什么这个工程 – 0x499602D2

+0

,它在C++ –

3

std::ptr_fun只能在一元函数:功能正好与一个参数。

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