c++ - 这里是否为这个模板函数生成了不同的实例?

标签 c++ templates function parameters instance

考虑以下结构和模板函数,是否每次使用具有不同“num”值的函数都会构建函数的新实例,或者自 const numbers<num> & nums参数是一个引用,将被实现为一个指针,所有使用不同“num”值的人都可以指向函数的一个实例?

template<size_t num>    
struct numbers{
 public:
  unsigned int nums[num];
};

template<size_t num>
void print(const numbers<num> & nums,size_t size){
 for (int i=0;i<size;i++)
  cout <<nums.nums[i]<<' ';
 cout <<'\n';
}

最佳答案

就您(程序员)而言,print<2>()print<3>()是单独的功能。虽然理论上编译器可以进行这种优化,但实际上可能不会发生。确定答案的最佳方法是查看生成的汇编程序。

关于c++ - 这里是否为这个模板函数生成了不同的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4133307/

相关文章:

c++ - 指针和非指针类型的重载 -> 运算符

c++ - 如何在 DLL 中声明常量?

c++ - 基于枚举参数调用专门的模板方法

arrays - 用 C 创建类似拼字游戏的游戏。如何检查字符串是否包含某些字符,然后将字符引用到数组并相应地对其进行评分

Javascript全局变量与局部变量的冲突

jquery - 获取元素偏移位置并做一些事情

c++ - 使用 require(..) 或 dofile(..) 在 Lua 中加载 .dll

c++ - 查找最大总和连续子数组 - 另一个版本

c++ - 根据模板参数生成不同大小的初始化列表

c++ - 区分函数模板中的按值传递和按引用传递