0

我必须做一个模板化的仿函数,它可以用作:

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

我做了一个基于函数指针的仿函数,但它不适用于 boost::bind,因为它返回一个 boost::Function,它是一个对象而不是函数 ptr。

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

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

我如何以通用方式处理对象?

谢谢

4

0 回答 0