模板参数推导是如何递归工作的
How does template argument deduction works recursively?
我正在阅读这篇文章:http://accu.org/index.php/journals/409。让我们举一个简单的例子:
template<typename T>
void foo(T& param){}
并像CCD_ 1一样调用上述函数。现在,演绎是如何递归工作的。我所理解的是演绎是这样的:
Arg的类型=const char[6]
,参数的类型为T&
->所以T
必须是->T1[]
->,这使得参数类似于T1 (&) []
->现在T1
必须是const char
->,这使得参数类似于const char (&)[]
。
我走的路对吗?感谢
p.S->我最近开始学习c++和编程,所以如果我先通过例子学习语言核心,而不是关注项目或庞大的算法,那可以吗?感谢
模板推导不能递归工作,至少在术语"递归"的传统意义上是这样。(我觉得你用错了这个词)。实际的推导相当简单。在这种特殊情况下,foo("String")
0是const char(&) [6]
(正如您正确指出的),这意味着T是const char[6]
。
相关文章:
- 即使没有调用这个递归函数,它是如何工作的?
- 递归函数调用在后台工作
- 这个递归函数是如何工作的?
- 使用 std::map 的递归堆栈分配如何工作?
- 为什么递归向后工作?
- 使用递归的函数未按预期工作
- 在 C++ 中使用递归填充 D2 数组,有时工作正常,其他时会引发异常
- 以下递归程序的最后一行是如何工作的
- 我对变量在递归函数中如何工作的理解是否正确?
- 不明白为什么这个简单的递归开始工作然后崩溃
- Word.exe 已停止使用递归工作
- 递归在此代码中的工作原理
- nqueens问题的C 递归解决方案无法正常工作
- C++中的递归选择不能完全正常工作
- 为什么后缀失败并且前缀在传递迭代器作为参数并在尾部位置递归时工作正常
- 无限递归模板实例化使用clang时GCC工作正常
- 我似乎无法让我的最大长度递归函数工作
- 简单的C++递归无法正常工作 - 我只是不明白为什么
- g++空函数删除是否递归工作
- 模板参数推导是如何递归工作的