繁体   English   中英

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

[英]Use any type in a function parameter in C++

我试图找到一种方法将这个 function 变成一个更通用的方法。

  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_t<std::is_function_v<T>, void> addStage(T* f) {
    ...
}

但是,如果您不需要任何特殊检查(无论T是 function 还是否),您实际上可以只使用template并将所有检查留给编译器:

template<class T>
void addStage(T f) {
   ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM