繁体   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