This is a continuation of How to get function pointer argument types in a variational pattern class?
I have this structure for accessing variational pattern arguments:
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; }; };
And I refer to the Args argument type with
typedef function<void(Args...)> fun; std::cout << std::is_same<int, typename function_traits<fun>::template arg<0>::type>::value << std::endl;
However, I would like to iterate over the arguments in order to be able to handle an arbitrary number of arguments. The following steps do not work, but to illustrate what I want:
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; }
c ++ c ++ 11 functor function-pointers variadic-templates
steffen
source share