Мне нужно знать точное количество аргументов лямбды. Мне плевать на их типы, мне просто нужен счет.
auto lambda0 = [&]() { ... };
auto lambda1 = [&](int32_t a) { ... };
auto lambda2 = [&](int32_t a, auto b) { ... };
lambda_details<decltype(lambda0)>::argument_count; // Equals 0
lambda_details<decltype(lambda1)>::argument_count; // Equals 1
lambda_details<decltype(lambda2)>::argument_count; // Equals 2
Было бы неплохо обнаружить вариабельные лямбды, чтобы я мог справиться и с этим крайним случаем.
auto lambda_variadic = [&](auto... args){ ... };
lambda_details<decltype(lambda_variadic)>::is_variadic; // Equals true
Как я могу получить эту информацию?