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