У меня есть функция, скажемПринимать как лямбда-функции и функции-указатели в качестве аргумента
void processSomething(Arg1 arg1, Function t){
...
t(someVariable);
}
Я хочу, чтобы оба из следующих использований работы:
processSomething(myArg1, [&](SomeVariable someVar){...});
void(*myFunc)(void) = &someFunc;
processSomething(myArg1, myFunc);
Однако, я обнаружил, что Я не могу использовать лямбда-путь при использовании void(*myFunc)(void)
в качестве объявления параметра. Любой способ использовать оба режима работы без двух отдельных функций или чрезмерно сложного использования оберток?
Если вы посмотрите на, например, [стандартные функции алгоритма] (http://en.cppreference.com/w/cpp/algorithm) вы увидите, что все функции, принимающие «предикат», будут иметь его как шаблонный тип. –