C++ C++;泛型模板函子

C++ C++;泛型模板函子,c++,templates,functor,C++,Templates,Functor,我要做一个模板函子,它可以用作: Function<int (char)> f = &printChar; Function<int (char)> f = boost::bind(&printChar, _1); 函数f=&printChar; 函数f=boost::bind(&printChar,_1); 我做了一个基于函数指针的函子,但它不能与boost::bind一起工作,因为它返回一个boost::function,它是一个对象,而不是函数p

我要做一个模板函子,它可以用作:

Function<int (char)> f = &printChar;
Function<int (char)> f = boost::bind(&printChar, _1);
函数f=&printChar;
函数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(); }
}
类函数{
公众:
类型定义R(*ptr_t)();
ptr_t_ptr;
函数(ptr_t p){ptr=p;}
R运算符(){return_ptr();}
}
如何以通用方式处理对象


Thx

boost::bind
没有返回一个
boost::function
经过几次测试后,我实际上可以使用boost::bind的返回作为一个函数,所以我不明白。。。它返回了什么?无论什么
boost::bind
返回的是一个可调用的对象,它的实际类型是未指定的,并且是一个实现细节
boost::function
将保存任何东西,无论是指针还是对象,只要它具有给定的签名就可以调用。现在,如果您想编写自己的
boost::function
,您可以从查看
boost::function
本身的实现开始。。。