首页 > 后端开发 > C++ > C 如何推导函数模板中的数组大小?

C 如何推导函数模板中的数组大小?

Barbara Streisand
发布: 2024-11-28 17:15:17
原创
860 人浏览过

How Does C   Deduce Array Size in Function Templates?

函数模板中数组大小的推导

在提供的 C 代码中,声明名为 cal_size 的函数模板接受数组作为其参数。函数模板根据参数类型推导出数组的大小并打印出来。

问题来了:模板参数 N 如何自动初始化为数组的正确大小,而无需在函数中显式指定它call?

模板参数推导

理解这种行为的关键在于模板参数推导的过程。当调用模板函数时,编译器使用参数的实际类型来推导模板参数的值。

对于 cal_size,参数类型是 T 类型元素的数组,其中指定大小 N。编译器根据数组的元素类型推导 T,并根据数组的大小推导 N。

当参数 a 传递给函数时,编译器将 T 推导为int 和 N 为 6。同样,当传递 b 时,T 为 int,N 为 1。

函数模板的特化

根据 T 和 N 的推导值,编译器生成函数模板的单独的、专门的版本。对于每次调用,都会使用参数数组的特定类型和大小信息创建一个专用函数。

在这种特殊情况下,会生成两个专用函数:

  • cal_size_int_6 for int [6] 数组
  • cal_size_int_1 for int[1]数组

main 函数本质上就是调用这些专门的函数。

以上是C 如何推导函数模板中的数组大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板