Чтобы избежать создания избыточных перегрузок функций при использовании std::function, можно следовать таким рекомендациям:
- Убедиться, что каждая перегруженная функция имеет отличающийся набор параметров. 5 Например, по количеству или типу параметров. 5
- Дать функциям разные имена. 5 Тип возвращаемого значения функции не учитывается при различении перегруженных функций. 5
- Не объявлять одноимённые функции во вложенных областях видимости. 4 Это не перегрузка, а конфликт, который может вызвать конфликты при расширении области видимости для разрешения перегрузки. 4
- Использовать технику отключения шаблонов. 4 Например, чтобы для целочисленных аргументов исключалась конкретизация шаблона, и при разрешении перегрузки выбиралась нешаблонная функция. 4