Biorąc pod uwagę następujące zmiennej liczbie argumentów szablonu:Szablon odliczenie dla zmiennej liczbie argumentów szablonu argumentów lambda
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](int a, int b) {}, 2, 3);
}
Na razie podczas wywoływania fun
z lambda trzeba określić typy wszystkich argumentów lambda wyraźnie. Wydaje się zbędne, ponieważ int, int
można wywnioskować z 2, 3
. Czy istnieje sposób, aby uczynić go bardziej zwięzłym i automatycznym?
Chciałbym następujących do pracy, ale nie:
template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](auto a, auto b) {}, 2, 3);
}
Mam kompilacji z g++ 5.4.0
i -std=c++14
.
Masz problem z wpisaniem 'int' zamiast' auto'? – Brian
@Brian Tak, bo wymaga ode mnie wywnioskowania, że jest to "int". Może być cokolwiek dłuższego, aby uczynić go bardziej dramatycznym. –