0

次のように使用できるテンプレート化されたファンクターを作成する必要があります。

Function<int (char)> f = &printChar;
Function<int (char)> f = boost::bind(&printChar, _1);

関数ポインターに基づいてファンクターを作成しましたが、boost::bind では機能しません。これは、関数 ptr ではなくオブジェクトである boost::Function を返すためです。

class Function <R()> {
public:
    typedef R (*ptr_t)();
    ptr_t _ptr;

    Function(ptr_t p) { _ptr = p; }
    R operator()() { return _ptr(); }
}

オブジェクトを一般的な方法で処理するにはどうすればよいですか?

どうも

4

0 に答える 0