template<typename... Params>
void fun(void(*f)(Params...), Params... params) {
f(params...);
}
int main() {
fun(+[](int a, int b) {}, 2, 3);
}
今、私は明示的にすべてのラムダの引数の型を指定する必要がラムダでfun
を呼び出すときのために。 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
でコンパイルしています。
あなたは 'auto'の代わりに' int'とタイプすることに問題がありますか? – Brian
@Brianはい、私はそれが 'int'であると推論する必要があります。より劇的なものにすることは、何でもできます。 –