我想知道,我如何在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;
}
我基本上试图在另一个函数中使用模板函数及其模板值类型,是否有任何方法可以做到这一点?
不能传递(集合)函数模板作为参数(但可以传递特定的实例化)。
你可以传递functor来解决你的问题:
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;
}
和
doMore([](auto x, auto y){ return doSomething(x, y); }, 42);