【发布时间】:2016-06-07 23:00:23
【问题描述】:
如何将模板化指针指向成员函数?
我所说的模板化是指事先不知道以下类型:
- 模板参数
T是指向成员的指针的类 - 模板参数
R是返回类型 - 可变参数模板参数
Args...是参数
说明问题的非工作代码:
template <???>
void pmf_tparam() {}
// this works, but it's a function parameter, not a template parameter
template <class T, typename R, typename... Args>
void pmf_param(R (T::*pmf)(Args...)) {}
struct A {
void f(int) {}
};
int main() {
pmf_tparam<&A::f>(); // What I'm looking for
pmf_param(&A::f); // This works but that's not what I'm looking for
return 0;
}
是否有可能在 C++11 中实现所需的行为?
【问题讨论】:
-
您需要这是一个真正的功能吗?我已经有一段时间没有接触 C++ 游戏了,但是如果你将你的函数设为一个类并重写
operator()使其看起来和工作起来像一个函数呢?