Với mẫu variadic sau:Template khấu trừ cho các đối số lambda mẫu variadic
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](int a, int b) {}, 2, 3);
}
Đối với bây giờ khi gọi fun
với một lambda tôi cần phải xác định loại của tất cả các đối số lambda một cách rõ ràng. Có vẻ như dư thừa kể từ khi int, int
có thể được suy ra từ 2, 3
. Có cách nào để làm cho nó ngắn gọn hơn và tự động hơn không?
Tôi muốn sau đây để làm việc, nhưng nó không:
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](auto a, auto b) {}, 2, 3);
}
Tôi đang biên soạn với g++ 5.4.0
và -std=c++14
.
Bạn gặp sự cố khi nhập 'int' thay vì' tự động'? – Brian
@Brian Có, vì nó yêu cầu tôi suy luận rằng đó là 'int'. Nó có thể là bất cứ điều gì dài hơn để làm cho nó ấn tượng hơn. –