【发布时间】:2017-02-13 02:51:22
【问题描述】:
给定以下可变参数模板:
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](int a, int b) {}, 2, 3);
}
现在,当使用 lambda 调用 fun 时,我需要明确指定所有 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 和-std=c++14 进行编译。
【问题讨论】:
-
您在输入
int而不是auto时遇到问题? -
@Brian 是的,因为它需要我推断它是
int。可以再长一点,让它更具戏剧性。
标签: c++ templates lambda generic-lambda