在另一个函数中使用模板函数作为模板参数

Using a template function as a template param in another function

我想知道如何在 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;
}

我基本上是在尝试在另一个函数中使用模板函数及其模板值类型,有什么办法可以做到这一点吗?

您不能将函数模板(的集合)作为参数传递(但您可以传递特定的实例化)。

您可以通过函子来解决您的问题:

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);