#include template name function(name (*ptr)(const name * const), name & value) { return (*ptr)(&value); } int test(const int * const value) { return *value + 1; } int main() { int arvo = 10; printf("%d", function(test, arvo)); // printtaa 11 }