簡體   English   中英

除了指向數據成員的指針之外,如何只接受模板中的可調用對象?

[英]How to accept only callable objects in templates except pointer to data members?

我想創建一個模板化的 function,它接受並調用一個可調用對象(指向數據成員的指針除外),並將 arguments 傳遞給它。 我希望模板只接受以下類型:-

  1. 函數指針
  2. 指向成員函數的指針
  3. Lambda
  4. 綁定表達式
  5. 標准::function
  6. 函子

像這樣...

template< class Function, class... Args >
explicit X( Function&& f, Args&&... args );

但是第一個參數是接受任何類型,我想創建一些驗證,以便它只接受可調用對象並在它無效時拋出錯誤(最好在編譯時)。

有一個 C++20 概念就是為了這個目的:

template<class Function, class... Args>
    requires std::invocable<Function, Args...>
void X(Function&& f, Args&&... args);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM