关于不可推导的函数模板参数的误解

来自C++ 模板 - 完整指南第 2 版

此外,此类参数不能有效地放置在模板参数包之后或出现在部分特化中,因为无法明确指定或推导它们。

template<typename ...Ts, int N>
void f(double (&)[N+1], Ts ... ps); // useless declaration because N
                                    // cannot be specified or deduced
template<typename ...Ts, int N>
void f(double (&)[N+1], Ts ... ps); // useless declaration because N
                                    // cannot be specified or deduced

其中此类参数指(我认为)与那些永远无法推导出的模板参数相对应的模板参数。即在上面的例子中N是无法推导的参数,因为N+1“太复杂了无法推导”。

但为什么指定它是不可能的?我知道不可能指定N...Ts推论,但为什么不能全部指定它们?换句话说,指定Ts=[int]N=2通过以下有什么问题?

以上是关于不可推导的函数模板参数的误解的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>