I was wondering, how I can do the following in C ?
template <typename T>
T doSomething(T x, T y) {
T result = /*do something*/;
return result;
}
template <typename T , typename V>
T doMore(**input doSomething as template**, V v){
T result = doSomething<V>(v,0);
return result;
}
I am basically trying to use a template function with its template valuetype in another function as such, is there any way to do that?
CodePudding user response:
You cannot pass (the set of) function template as argument (you can pass specific instantiation though).
You might pass functor to solve your issue:
template <typename T>
T doSomething(T x, T y) {
T result = /*do something*/;
return result;
}
template <typename F, typename V>
T doMore(F f, V v){
T result = f(v, V{0});
return result;
}
And then
doMore([](auto x, auto y){ return doSomething(x, y); }, 42);