Ich habe die gleiche Funktion mit dem einzigen Unterschied, dass es entweder erhöht oder dekrementiert. Ich würde das gerne verallgemeinern.Übergeben Inkrement/Dekrement-Operator zu einer Funktion
template<typename O>
void f(int& i, O op){
op(i);
}
int main() {
int i;
f(i,operator++);
f(i,operator--);
return 0;
}
Wie kann ich das funktionieren lassen?
Meine andere Option ist die Verwendung von funktional std :: plus oder zwei Funktionen, aber ich würde diese Lösung bevorzugen, wenn möglich. Vielen Dank.
einfach Ihre eigenen schreiben Funktor. (Wenn Sie dies tun könnten, indem Sie einfach 'operator ++' schreiben, dann würden Sie 'std :: plus' nicht brauchen ...) –
Ich glaube nicht, dass Sie das für native Typen machen können. –
'f (i, [] (int & v) {++ v;});' – cdhowie