17 template<
typename R,
typename...
Args>
23 template<
typename C,
typename R,
typename...
Args>
26 template<
typename C,
typename R,
typename...
Args>
33 template<
typename F,
size_t Idx>
34 using ArgType_t = std::tuple_element_t<Idx + 1, decltype (detail::TypeGetter (*static_cast<F*> (
nullptr)))>;
37 using RetType_t = std::tuple_element_t<0, decltype (detail::TypeGetter (*static_cast<F*> (
nullptr)))>;
46 template<
typename R,
typename C>
54 template<
typename PtrType>
57 template<
typename PtrType>
std::tuple< R, Args... > TypeGetter(R(*)(Args...))
Container< T > Filter(const Container< T > &c, F f)
std::tuple_element_t< 0, decltype(detail::TypeGetter(*static_cast< F * >(nullptr)))> RetType_t
typename detail::DecomposeMemberPtr< PtrType >::Value_t MemberTypeType_t
MemberTypeType_t< decltype(Ptr)> MemberPtrType_t
std::tuple_element_t< Idx+1, decltype(detail::TypeGetter(*static_cast< F * >(nullptr)))> ArgType_t
MemberTypeStruct_t< decltype(Ptr)> MemberPtrStruct_t
typename detail::DecomposeMemberPtr< PtrType >::StructType_t MemberTypeStruct_t