![](/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.