2016-01-23 4 views
0

Я пытаюсь понять функцию шаблона. Конечная цель - передать весь массив функции. По-видимому, существует много разных способов реализации этого, но все они используют функцию шаблона. Вот один из самых простых примеров, которые я нашел ...Функция с size_t Параметр шаблона

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! 

Я думал шаблон <> был использован для создания переменной, которая может быть использована вместо междунар, поплавок, полукокса и т.д .. какой смысл указать тип (size_t), что он делает?

+1

См. [Параметры шаблона непигового типа] (http://en.cppreference.com/w/cpp/language/template_parameters#Template_non-type_arguments). –

ответ

1

Параметр шаблона size_t N является выведенным интегральным значением, основанным на размере массива, переданном функции шаблона. Параметры шаблонов могут быть

  • параметр нестандартного шаблона;
  • тип шаблон параметр;
  • шаблон шаблон параметр.

См here

0

Вы можете повторно использовать шаблон для массивов любого размера.

Смежные вопросы