这里是否为该模板函数生成了不同的实例?

2023-12-13

考虑到以下结构和模板函数,每次使用具有不同“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>() and print<3>()是独立的功能。虽然理论上编译器可能能够进行这种优化,但实际上可能不会发生。确定答案的最佳方法是查看生成的汇编程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这里是否为该模板函数生成了不同的实例? 的相关文章

随机推荐