簡體   English   中英

可變參數 function 調用 lambda 並分別傳遞參數

[英]Variadic function to call lambda and pass parameters separately

我想調用一個 lambda 並分別傳遞參數。

例如:

#include <memory>

template<typename T, typename... TS>
T call(T (*)(TS...) f, TS&&... args) {
    return f(std::forward<TS...>(args...));
}

因此我想這樣稱呼這個 function :

call([](auto arg1, auto arg2){
    std::cout << arg1 << ", " << arg2 << std::endl;
}, 1, 2);

這應該打印出1, 2

你不能只是拍打...到處都希望它能奏效。 了解參數包的工作原理並使用正確的語法。 此外, function call()不應返回T 使用auto作為返回類型。 而且T已經是f的完整類型,你不應該寫T (*)(TS...) 這是固定版本:

template<typename T, typename... TS>
auto call(T f, TS&&... args) {
    return f(std::forward<TS>(args)...);
}

暫無
暫無

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

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