ich eine Funktion haben, sagen wir mal,beide Lambda-Funktionen und Funktionszeiger als Argument
void processSomething(Arg1 arg1, Function t){
...
t(someVariable);
}
Ich möchte die beiden folgenden Verwendungen arbeiten:
processSomething(myArg1, [&](SomeVariable someVar){...});
void(*myFunc)(void) = &someFunc;
processSomething(myArg1, myFunc);
Allerdings habe ich festgestellt, dass Ich kann den Lambda-Weg nicht verwenden, wenn ich void(*myFunc)(void)
als Parameterdeklaration verwende. Jeder Weg, um beide Verwendungen ohne zwei separate Funktionen oder eine zu komplizierte Verwendung von Wrappern arbeiten zu lassen?
Wenn Sie z.B. [Die Standard-Algorithmus-Funktionen] (http://en.cppreference.com/w/cpp/algorithm) Sie werden sehen, dass alle Funktionen, die ein "Prädikat" nehmen, es als einen Templat-Typ haben werden. –