функция подписи в шаблонах c


std::function

Класс шаблона таким образом, что если мы хотим, чтобы обернуть функции, как следующие:

void printInt(int integer){    std::cout << int << '\n';}
std::function<void(int)>a class I found

Мы используем . До недавнего времени я думал, что это был странный нюанс класса, но в то время как поиск для выполнения делегата в C использует похожий синтаксис.

isvoid(int)a function that takes an int, and returns void

Что именно , и как мы называем это в техническом плане? Это, кажется, стандартный способ сказать "" в codespeak, но мой инстинкт говорит, что это ужасно упрощенно.

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

template <typename T> class delegate;template<class R, class ...A>class delegate<R (A...)>{...

Что является основанием для объявления функции как таковой, а не просто используя следующие:

template<class R, class ...A>class delegate{...