我想在C++中編寫通用包裝器。這是我到目前爲止已經寫的:通用包裝C++
//primary template
template<typename T>
class function
{
};
//partially specialized template
template<typename T, typename U, typename V>
class wrapper<T(U,V)>
{
private:
//typedef pointer to function
typedef T (*pfn)(U,V);
pfn f;
public:
wrapper(pfn func):f(func)
{
};
T operator()(U a, V b)
{
return f(a,b);
}
};
可使用實例化,例如:
wrapper<double(double, double)> someWrapper(&someFunction);
我在想,如果有人能在以下方面指出我在正確的方向如何修改包裝模板以便能夠以下列方式實例化:
wrapper<double(double, double)> somewrapper(&someClass, &someClass::someFunction)
wrapper<double(someClass*, double)> somewrapper(&someClass::someFunction)
我會很感激這方面的幫助。
'std :: function'有什麼問題? –
Boost已經在Boost.Function中有此功能:http://www.boost.org/doc/libs/1_47_0/doc/html/function.html – Dani
http://loki-lib.sourceforge.net/ –