Здравствуйте, koenjihyakkei, Вы писали:
K>Такой вариант тоже рассматривал, но тут не нравится, что сигнатура фнукции не видна.
Сигнатуру функции можно зафиксировать при помощи SFINAE.
K>Кстати а в плане перфоманса есть отличие в передаче указателя на функцию и использования шаблонной?
Если оставить за скобками возможности оптимизации, то использование функционального объекта предпочтительнее, поскольку использование указателя на функцию — это дополнительная косвенность и адрес вызова вычисляется во время выполнения, а не во время компиляции.
K>С учетом того, что туда почти всегда будет лямбда передаваться.
Принимая указатель на функцию, ты сможешь передавать только простейшие лямбды, не использующие захват контекста. Таким образом, польза от лябмд сильно теряется. И вообще, указатели на функции для С++ противоестественны, ИМХО.