c – 变体模板,参数包及其在参数列表中的歧义
在这个问题中,我将参考
my previous question.
在这个问题上,我发现以下内容无效: template<typename T,typename... A,typename S> class C { }; 这是因为:
当然,这是有道理的. 然后,作为替代方法,提出了以下涉及专业化的方法: template<typename F,typename S> class C; template<typename T,typename S> class C<T(A...),S> { }; 实际上,这似乎是有效的,所以感谢提出它的那个. 无论如何,我不明白为什么这是有效的代码,而前一个没有. 解决方法
在类模板中,预期模板参数列表C a,b,c,d,e,f>需要匹配
template<typename T,typename S> 其中… A只是浮动在参数列表中. 但在专业化中,需要匹配的不是模板列表,而是模式: C<T(A...),S> 这是容易的,因为A …被分隔. 因此,在模板专业化中,参数列表只是一个符号的清单,一些标量和一些参数包,将以模式显示. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |