给定以下可变参数模板:
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](int a, int b) {}, 2, 3);
}
现在,当fun
使用 lambda 调用时,我需要明确指定所有 lambda 参数的类型。这似乎是多余的,因为int, int
可以从 推导出来2, 3
。有没有办法让它更简洁和自动化?
我希望以下工作,但它没有:
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](auto a, auto b) {}, 2, 3);
}
我正在使用g++ 5.4.0
and进行编译-std=c++14
。