模板参数推导如何递归工作?

时间:2015-12-01 14:55:51

标签: c++ templates

我正在读这篇文章:http://accu.org/index.php/journals/409。我们举一个简单的例子:

template<typename T>
void foo(T& param){}

并调用上面的函数foo("String")。现在演绎如何递归? 。我所理解的是演绎的作用是这样的:

Arg类型= const char[6],参数类型为T& - &gt; 所以T必须是 - &gt; T1[] - &gt;这使参数像T1 (&) [] - &GT;现在T1必须const char - &gt;这使得参数像const char (&)[]

我是正确的道路吗?感谢

P.S - &gt;我最近开始学习c ++和编程,所以如果我首先用示例学习语言核心而不是关注项目或大算法,这样可以吗?感谢

1 个答案:

答案 0 :(得分:0)

模板推导不能递归地起作用,至少在术语“递归”的传统意义上是这样。 (我觉得你使用的术语不正确)。实际的推论相当简单。 在这种特殊情况下,T&const char(&) [6](正如您正确指出的那样),这意味着T为const char[6]