带有 size_t 模板参数的函数

Ben*_*oni 6 c++ templates template-argument-deduction

我正在尝试了解模板功能。最终目标是将整个数组传递给函数。似乎有许多不同的方法来实现这一点,但它们都使用模板函数。这是我发现的最简单的例子之一......

template<size_t N>
void h(Sample (&arr)[N])
{
    size_t count = N; //N is 10, so would be count!
    //you can even do this now:
    //size_t count = sizeof(arr)/sizeof(arr[0]);  it'll return 10!
}
Sample arr[10];
h(arr); //pass : same as before!
Run Code Online (Sandbox Code Playgroud)

我认为 template<> 用于创建一个变量,可以用来代替 int、float、char 等。指定类型 (size_t) 有什么意义,这有什么作用?

Tho*_*eod 3

模板size_t N参数是根据传递给模板函数的数组大小推导的整数值。模板参数可以是

  • 非类型模板参数;
  • 输入模板参数;
  • 模板模板参数。

参考:模板参数