按函数名称c ++ 11参数化模板

Edw*_*uez 6 c++ templates c++11

具有以下功能

void print(int a) { cout << a << endl; }
void print(std::string a) { cout << a << endl; }
Run Code Online (Sandbox Code Playgroud)

您可以执行以下模板

template <class T> void printT(T a) { print(a); }
Run Code Online (Sandbox Code Playgroud)

是否有一些机制来参数化函数名称? 像这样的东西:

template <class T, class F> void anyT(T a) { F(a); }
Run Code Online (Sandbox Code Playgroud)

我不需要成为一个函数模板,只需要一些机制来实现相同的功能.

101*_*010 1

是的,您可以将调用者作为函数指针传递,该函数指针作为输入,T如下所示:

template <class T> void anyT(T a, void(*f)(T)) {
  f(a);
}
Run Code Online (Sandbox Code Playgroud)

现场演示

  • 我没有投反对票,但也许最好不要指定函数的签名,而只为其提供一个模板参数。这样,签名就可以不同(例如“const T&amp;”),并且函子也将被允许。 (2认同)