这是参考this问题中的第一个形式参数。


  注意:Tarrsize在此处作为模板参数传递。


T (&arr)[arrsize]似乎是某种类型的转换,但是我不确定。 &arr不是类型名称,它只是形式参数名称,其旁边带有引用符号。为什么不只放T* arr[]?此外,我不认为使用实现函数重载的语言来强制转换成正式的参数列表或强制转换是不可能的。 (即在函数调用中引入歧义)。我想模板函数会引入有用的歧义,因此在这种情况下是否可以进行强制转换-假设两个模板函数没有相同的签名,并且不进行强制转换?

实例化此模板时,此参数变为哪种类型?它是对静态数组的指针还是引用?只需T*;或者是其他东西?

最佳答案

T (&arr)[arrsize]


在函数中使用参数时,将声明一个名为arr的变量,该变量是对大小为T的类型arrsize的数组的引用。这是一种将数组传递给函数而不使它衰减为指针的方法。您可以在函数中使用数组,就像在声明它的作用域中一样。

T& arr[arrsize]


是标准不允许的参考数组。应该是编译器错误。

关于c++ - 有人可以解释这种语法吗? T(&arr)[arrsize]与T&arr [arrsize],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37953321/

10-10 19:39