簡體   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