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
似乎编译器不理解“空”特化,它将缺少的模板类型解释为缺少信息而不是“无类型”信息.这样做的正确方法是什么? (很抱歉这个潜在的天真问题,但我对可变参数模板很新,我没有找到关于这个主题的文档).
谢谢
以下所有语法都适用于我:
struct S { template<typename... Args> static int *foo(const char *,const char *,Args...);};int main() { (int *(*)(const char *,const char *))S::foo<>; (int *(*)(const char *,const char *))S::foo; (int *(&)(const char *,const char *))S::foo<>; (int *(&)(const char *,const char *))S::foo; int *(&f)(const char *,const char *) = S::foo<>; int *(&g)(const char *,const char *) = S::foo; int *(*h)(const char *,const char *) = S::foo<>; int *(*i)(const char *,const char *) = S::foo;}总结
以上是内存溢出为你收集整理的c – “空”可变参数模板特化的地址全部内容,希望文章能够帮你解决c – “空”可变参数模板特化的地址所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)