Обычных функций имеют различные типы только тогда, когда их сигнатуры отличаются.
Это означает, что эти функции оба имеют один и тот же тип int(int)
:
int f1(int);
int f2(int);
в то время как это имеет другой тип void(int)
void f3(int);
Однако функциональные объекты могут иметь различные типы, когда их подписи одинаковы.
Это означает, что эти два класса различных типов (различные классы всегда есть):
class c1 {int operator()(int);};
class c2 {int operator()(int);};
В самом деле, каждое функциональное поведение определяется объектом функции имеет свой собственный тип.
Я не знаю точно, что автор означает «функциональное поведение», но я думаю, что это просто повторение того, что два типа классов являются отдельными типами.
Это значительное улучшение для общего программирования с использованием шаблонов, потому что вы можете передать функциональное поведение в качестве параметра шаблона
означает, что вы можете указать функцию класса в качестве параметра типа шаблона:
temp<c1> thing_using_c1;
temp<c2> thing_using_c2;
Но вы не можете указать обычную функцию таким образом, вам нужно будет выполнить функцию по-другому:
temp<int(int)> thing_using_f1(f1);
temp<int(int)> thing_using_f2(f2);
Что вы понимаете? Какие исследования вы сделали? Откуда взялось заявление, а где другие заявления? – Useless
Необходим дополнительный контекст. –