16 #ifndef ZYPPNG_META_FUNCTION_TRAITS_H_INCLUDED 17 #define ZYPPNG_META_FUNCTION_TRAITS_H_INCLUDED 21 #include <zypp-core/zyppng/meta/TypeTraits> 25 template<
class F,
class =
void >
28 template<
class R,
class... Args>
33 static constexpr std::size_t arity =
sizeof...(Args);
35 template <std::
size_t N>
38 static_assert(N >= 0 && N < arity,
"error: invalid parameter index.");
39 using type =
typename std::tuple_element<N,std::tuple<Args...>>
::type;
44 template<
class R,
class... Args>
49 template<
class R,
class... Args>
54 template<
class C,
class R,
class... Args>
59 template<
class C,
class R,
class... Args>
64 template<
class C,
class R>
typename std::tuple_element< N, std::tuple< Args... > >::type type
typename make_void< Ts... >::type void_t
decltype(&T::operator()) has_call_operator