在C ++中的函数参数中使用任何类型

我正在尝试找到一种方法来将此功能转换为更通用的功能。

  void addStage(Image (f)(Image));

我想要得到的东西可以接收带有或不带有参数的不同类型的函数,是否无效。

我已经尝试过类似的方法,但是它当然不起作用。

void addStage(auto (f)(auto));

为了提供更多的上下文,我将说此功能将是管道中的各个阶段。

评论
六道仙人
六道仙人
template <typename AnyFunction>
void addStage(AnyFunction f) {
  // implement in header file!
}
点赞
评论
一起疯了
一起疯了

使用SFINAE:

template<class T>
std::enable_if<std::is_function_v<T>, void> addStage(T f) {
   ...
}

This template will be accepted only if T is a function

点赞
评论