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単項関数 (厳密に 1 つのパラメーターを持つ関数) でのみ機能します。

bool funct1();は単項関数ではなく、ヌル関数です。void パラメータのようなものはありません。C から継承された構文bool funct1(void);は、パラメーターがまったくないことを示す奇妙な方法です。

于 2013-05-19T12:40:15.463 に答える