我有一个可变参数模板成员函数定义为:
template<typename ... Params>
VAlgorithm* CreateAlgorithm(const char *objectName, const char *className, Params ... par)
我想获取 Params 不包含类型的专用版本的地址(我称之为“空”专业化),即:
VAlgorithm* CreateAlgorithm(const char *objectName, const char *className)
我尝试了几种方法。天真的方式:
&AlgorithmFactory::CreateAlgorithm<>
(例如,因为 &AlgorithmFactory::CreateAlgorithm< int > 有效)和更明确的方式:
(VAlgorithm* (*)(const char*, const char*))AlgorithmFactory::CreateAlgorithm<>
通过明确的方式,GCC 4.7.1 说:
error: insufficient contextual information to determine type
编译器似乎不理解“空”特化,它将缺少的模板类型解释为缺少信息而不是“无类型”信息。这样做的正确方法是什么?(很抱歉这个可能很幼稚的问题,但我对可变参数模板还很陌生,我没有找到关于这个主题的文档)。谢谢