考虑以下人工示例:
template <typename T, typename... Args>
struct A {
typedef T Type;
};
Using A
使用 1 个或多个参数可以工作,而使用零个参数则按预期失败:
错误:模板参数数量错误(0,应该是 1 或更多)
是否有可能使A
处理零模板参数定义的情况A::Type
to int
如果没有参数,第一个模板参数是否有?
首先将主模板定义为最一般的情况 - 其中还包括零参数:
template <typename... Args> //general : 0 or more
struct A { using Type = int; }
Then 部分地专门用于1个或以上参数为:
template <typename T, typename... Args> //special : 1 or more
struct A<T,Args...> { using Type = T; }
一旦您有了这种专业化,主模板将用于零参数only!
请注意,在数学上1个或以上是一个特例0个或更多——后者是更一般的情况(不是相反).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)