![](/img/trans.png)
[英]Iterating through parameters of a variadic function template using variadic 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.