如何从模板类型中获取指向模板化成员函数的指针?
Posted
技术标签:
【中文标题】如何从模板类型中获取指向模板化成员函数的指针?【英文标题】:How can you get pointer to a templated member function from a template type? 【发布时间】:2010-11-03 04:28:28 【问题描述】:以下代码无法编译...知道为什么吗?这是非法的 C++ 吗?
class Handler
public:
template <typename T>
void handle(T t)
;
class Initializer
public:
template <typename T, typename H>
void setup(H *handler)
void (H::*handle)(T) = &H::handle<T>; // fails
;
int main()
Initializer initializer;
Handler handler;
initializer.setup<int, Handler>(&handler);
【问题讨论】:
【参考方案1】:你需要template
:
void (H::*handle)(T) = &H::template handle<T>;
因为模板handle
是用依赖类型限定的。 (就像你使用typename
,如果一个类型被一个依赖类型限定。)
【讨论】:
以上是关于如何从模板类型中获取指向模板化成员函数的指针?的主要内容,如果未能解决你的问题,请参考以下文章