以下代码基于片段从这里 https://stackoverflow.com/q/6106158/57428。我想要一个模板化函数,它接受对实例化函数时推导的大小数组的引用:
template<int size>
void myFunction( SomeType(¶m)[size] )
{
//use param and size here
}
//called like this:
SomeType array[SomeConstant];
myFunction( array ); //SomeConstant magically gets into the function as "size"
现在我很困惑SomeType(¶m)[size]
。我希望以下内容能够发挥作用:
template<int size>
void myFunction( (SomeType[size])& param ) {}
但它不会编译。
为什么我需要这种奇怪的语法来“引用固定大小的数组”?
它基于 C 声明语法。当然,C 没有引用,但它旨在模仿 C 指针语法。这是一个指向数组的指针(在 C 或 C++ 中):
int (*parray)[size];
这个想法是声明模仿了用法。这意味着稍后当您使用时parray
, 表达方式
(*parray)[0]
(或任何索引)是 int 类型。当然,引用类型的对称性会被打破,因为&
在声明它们时使用,但不引用它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)