Объявление функции является прототипом для функции (или оно может быть получено из определения функции, если в этот момент компилятор не видел прототипа) - оно включает тип возвращаемого значения, имя функции и типы параметры (необязательно в C).
Подпись функции - это части объявления функции, которые компилятор использует для выполнения разрешения перегрузки. Поскольку несколько функций могут иметь одно и то же имя (т. Е. Они перегружены), компилятору нужен способ определить, к какой из нескольких возможных функций с определенным именем должен обращаться вызов функции. Подпись - это то, что компилятор считает в этом разрешении перегрузки. В частности, стандарт определяет «подпись» как:
информация о функции, которая участвует в разрешении перегрузки: типы ее параметров и, если функция является членом класса, cv-квалификаторы (если таковые имеются) для самой функции и класса, в котором функция-член объявлен.
Обратите внимание, что возвращаемый тип не является частью сигнатуры функции. Как сказано в сноске стандарта, «сигнатуры функций не включают тип возвращаемого значения, поскольку он не участвует в разрешении перегрузки».