这个函数第三个参数什么意思?解决方案

这个函数第三个参数什么意思?
template< unsigned N >
bool RangeName::SearchNameUpper( const String& rUpperName, int& rIndex, const int (&rszScopes)[N] ) const
{


  sal_uInt16 i = 0;
  while (i < nCount)
  {
  if ( (((*this)[i])->GetUpperName() == rUpperName) 
  && std::find( rszScopes, rszScopes + N, ((*this)[i])->GetRangeScope() ) != rszScopes + N )
  {
  rIndex = i;
  return true;
  }
  i++;
  }
  return false;
}

template bool RangeName::SearchName( const String& rName, int& rPos, const int (&rszScopes)[2] ) const;

------解决方案--------------------
int型数组的引用
------解决方案--------------------
这个函数使得我们可以传递任意大小的数组引用作为参数;
如果不使用泛型函数的话,那么你的数组大小必须要写死,譬如100,否则的话,你无法把一个真正的数组传递给函数,你只能传递一个地址,譬如你可以传递一个指针pArray,然后告诉函数你的数组大小nCount,但是此时你传递的本质上是一个指针,你如果用sizeof(pArray)来查看,得到的结果是4,所以需要你的nCount来告诉函数这个指针指向的内存区域有多大,但是这个泛型函数使得数组引用大小为可变的,N变成了泛型的一个参数,泛型除了类型参数T,也可以包含指针或者整型参数,此时如果用sizeof(pArray)得到的大小是N * sizeof(int),而不是4了;
包含非类型参数的泛型类如下:
Template<class T, size_t nStackSize>
class Stack
{
}