2013-05-19 57 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);只是一種奇怪的說法,根本沒有參數。