У меня есть особый случай, где я хотел бы измерить статистику использования моей функции std :: function. Обычно такие вещи, как затраченное время, количество вызовов, какая функция вызывается часто, а также иногда для тестирования, например, случайный вызов nullptr для проверки того, как мой код обрабатывает его.
Сначала я думал о наследовании от std :: func, а затем переопределил функцию, которая извлекает указатель - или что-то в этом роде - но после прочтения нескольких тем и руководств я пришел к выводу, что это очень незаметно.
Моя вторая мысль - просто создать класс-оболочку. Рефакторинг всего моего кода для использования этой обертки вместо std :: function не составит труда, так что все в порядке. Все, чего я хочу избежать - это использовать ненужное и неудобное использование, как любую дополнительную функцию. eg.:
std::function<...> dummyvar (...);
// Later I can call this dummy var as simply as dummyvar(...)
// I don't want to add extra complexity, like this:
CustomWrapper<...> customdummy (...);
customdummy.getVal()(...);
// Best would be if I could actually "simply" replace all std::function to the Custom Wrapper.
В моем текущем очень простом случае не происходит копирования функции std ::, только простая инициализация ее один раз, вызов ее все время, когда это необходимо. Так что, если это поможет, вы можете учитывать это и игнорировать другие вещи, такие как конструктор копирования или что-то подобное (конечно, чем больше возможностей не хватает в пользовательской реализации, тем лучше, но лично то, что я упомянул, достаточно далеко)
Я понятия не имею, как продвигаться дальше, поэтому я даже не приложил никакого исходного кода.