我在Base结构中有一个结构traits
。这种结构对于确定功能的类型是必需的。
为什么我需要在方法Base :: foo的第二个参数中使用template
关键字?
template<typename T>
struct Base {
struct traits {
typedef void(*Type)(int);
template <typename UserClass>
struct method {
typedef void(UserClass::*Type)(int);
};
};
template<typename UserClass>
void foo(UserClass* obj, typename traits::template method<UserClass>::Type ptr) {
}
};