Это продолжение Как получить типы аргументов указателя функции в классе шаблона с переменным числом аргументов?
У меня есть эта структура для доступа к аргументам шаблона с переменным числом аргументов:
template<typename T>
struct function_traits;
template<typename R, typename ...Args>
struct function_traits<std::function<R(Args...)>>
{
static const size_t nargs = sizeof...(Args);
typedef R result_type;
template <size_t i>
struct arg
{
typedef typename std::tuple_element<i, std::tuple<Args...>>::type type;
};
};
И я получаю доступ к типу аргумента Args с помощью
typedef function<void(Args...)> fun;
std::cout << std::is_same<int, typename function_traits<fun>::template arg<0>::type>::value << std::endl;
Однако я хотел бы перебрать аргументы, чтобы иметь возможность обрабатывать произвольное количество аргументов,Следующее не работает, но для иллюстрации того, что я хочу:
for (int i = 0; i < typename function_traits<fun>::nargs ; i++){
std::cout << std::is_same<int, typename function_traits<fun>::template arg<i>::type>::value << std::endl;
}