【发布时间】:2015-10-10 02:43:34
【问题描述】:
template<typename T, typename M, M Method>
class ProxyObject
{
public:
template<typename... Args>
void Invoke (T& Object, _In_ Args&&... A)
{
(void)(Object.*Method)(std::forward<Args>(A)...);
}
};
class Object
{
public:
int MyMethod (int Val)
{
wcout << L"Hello!" << endl;
return Val;
}
};
int wmain ()
{
Object myObj;
ProxyObject<Object, decltype(&Object::MyMethod), &Object::MyMethod> obj;
obj.Invoke(myObj, 10);
return 0;
}
decltype(&Object::MyMethod) 在obj 的定义中似乎是多余的。有什么办法可以让ProxyObject自动推断出被传递的指向成员函数的类型,这样我就可以定义obj如下:
ProxyObject<Object, &Object::MyMethod> obj;
【问题讨论】:
-
@cpplearner 很好。时机几乎是不可思议的。仍然希望我今天可以使用的解决方案????