Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::v3::invoke_fn Struct Reference

Public Member Functions

template<typename F , typename Obj , typename First , typename... Rest, meta::if_c< detail::is_function< F >::value, int > = 0>
constexpr auto operator() (F Obj::*ptr, First &&first, Rest &&... rest) const noexcept(noexcept(decltype(invoke_member_fn(std::is_base_of< Obj, detail::decay_t< First >>{}, is_reference_wrapper_t< detail::decay_t< First >>{}, ptr, static_cast< First && >(first), static_cast< Rest && >(rest)...))(invoke_member_fn(std::is_base_of< Obj, detail::decay_t< First >>{}, is_reference_wrapper_t< detail::decay_t< First >>{}, ptr, static_cast< First && >(first), static_cast< Rest && >(rest)...)))) -> decltype(invoke_member_fn(std::is_base_of< Obj, detail::decay_t< First >>
 
template<typename Data , typename Obj , typename First , meta::if_c<!detail::is_function< Data >::value, int > = 0>
constexpr auto operator() (Data Obj::*ptr, First &&first) const noexcept(noexcept(decltype(invoke_member_data(std::is_base_of< Obj, detail::decay_t< First >>{}, is_reference_wrapper_t< detail::decay_t< First >>{}, ptr, static_cast< First && >(first)))(invoke_member_data(std::is_base_of< Obj, detail::decay_t< First >>{}, is_reference_wrapper_t< detail::decay_t< First >>{}, ptr, static_cast< First && >(first))))) -> decltype(invoke_member_data(std::is_base_of< Obj, detail::decay_t< First >>
 
template<typename F , typename... Args, meta::if_c<!std::is_member_pointer< uncvref_t< F >>::value, int > = 0>
constexpr auto operator() (F &&fn, Args &&... args) const noexcept(noexcept(decltype(static_cast< F && >(fn)(static_cast< Args && >(args)...))(static_cast< F && >(fn)(static_cast< Args && >(args)...)))) -> decltype(static_cast< F && >(fn)(static_cast< Args && >(args)...))
 
 static_cast (first)
 
 static_cast (rest)...))
 
 static_cast (first)))
 

Public Attributes

 ptr