Range-v3
Range algorithms, views, and actions for the Standard Library
ranges::indirected< Fn > Struct Template Reference

Public Member Functions

 indirected (Fn fn)
 
template<typename... Its>
invoke_result_t< Fn &, iter_reference_t< Its >... > operator() (copy_tag, Its...) const
 
template<typename... Its>
auto operator() (Its... its) const noexcept(noexcept(invoke((Fn const &) fn_, *its...))) -> decltype(invoke((Fn const &) fn_, *its...))
 
template<typename... Its>
auto operator() (Its... its) noexcept(noexcept(invoke(fn_, *its...))) -> decltype(invoke(fn_, *its...))
 
template<typename... Its>
auto operator() (move_tag, Its... its) const noexcept(noexcept(static_cast< aux::move_t< invoke_result_t< Fn const &, iter_reference_t< Its >... >>>(aux::move(invoke((Fn const &) fn_, *its...))))) -> decltype(static_cast< aux::move_t< invoke_result_t< Fn const &, iter_reference_t< Its >... >>>(aux::move(invoke((Fn const &) fn_, *its...))))
 
template<typename... Its>
auto operator() (move_tag, Its... its) noexcept(noexcept(static_cast< aux::move_t< invoke_result_t< Fn &, iter_reference_t< Its >... >>>(aux::move(invoke(fn_, *its...))))) -> decltype(static_cast< aux::move_t< invoke_result_t< Fn &, iter_reference_t< Its >... >>>(aux::move(invoke(fn_, *its...))))