std::function
класс шаблонный таким образом, что, когда мы хотим, чтобы обернуть функцию, как следующее:Функциональные подписи в C++ шаблоны
void printInt(int integer)
{
std::cout << int << '\n';
}
Мы используем std::function<void(int)>
. До недавнего времени я думал, что это был странный нюанс класса, но a class I found при поиске делегирования в C++ использует аналогичный синтаксис.
Что именно являетсяvoid(int)
, и что мы называем это техническими терминами? Кажется, это стандартный способ сказать «функция, которая принимает int и возвращает void» в кодексе, но мой инстинкт кишки говорит, что это ужасно упрощено.
Во-вторых, я заметил, что когда я вижу шаблоны, использующие этот синтаксис, они используют вариативные шаблоны, чтобы можно было сопоставить несколько сигнатур функций. Из приведенной выше ссылке:
template <typename T> class delegate;
template<class R, class ...A>
class delegate<R (A...)>
{
...
Что является причиной для объявления функции как таковой, вместо того, чтобы просто используя следующие:
template<class R, class ...A>
class delegate
{
...
Итак, эта часть * на самом деле * называется сигнатурой функции? Думаю, я знал этот термин в конце концов ... Хорошее объяснение, спасибо! – Conduit