| 
| 
  | indirected (Fn fn) | 
|   | 
| 
template<typename ... Its>  | 
| auto  | operator() (copy_tag, Its...) const -> result_of_t< Fn &(decltype(*std::declval< Its >())...)> | 
|   | 
| 
template<typename ... Its>  | 
| auto  | operator() (Its ...its) noexcept(noexcept(decltype(invoke(std::declval< Fn &>(), *its...))(invoke(std::declval< Fn &>(), *its...)))) -> decltype(invoke(std::declval< Fn &>(), *its...)) | 
|   | 
| 
template<typename ... Its>  | 
| auto  | operator() (Its ...its) const noexcept(noexcept(decltype(invoke(std::declval< Fn const &>(), *its...))(invoke(std::declval< Fn const &>(), *its...)))) -> decltype(invoke(std::declval< Fn const &>(), *its...)) | 
|   | 
| 
template<typename ... Its>  | 
| auto  | operator() (move_tag, Its ...its) noexcept(noexcept(aux::move(invoke(std::declval< Fn &>(), *its...)))) -> aux::move_t< decltype(invoke(std::declval< Fn &>(), *its...))> | 
|   | 
| 
template<typename ... Its>  | 
| auto  | operator() (move_tag, Its ...its) const noexcept(noexcept(aux::move(invoke(std::declval< Fn const &>(), *its...)))) -> aux::move_t< decltype(invoke(std::declval< Fn const &>(), *its...))> | 
|   |