14#ifndef RANGES_V3_FUNCTIONAL_INDIRECT_HPP
15#define RANGES_V3_FUNCTIONAL_INDIRECT_HPP
24#include <range/v3/utility/static_const.hpp>
26#include <range/v3/detail/prologue.hpp>
36 RANGES_NO_UNIQUE_ADDRESS
45 template<
typename... Its>
46 [[noreturn]] invoke_result_t<Fn &, iter_reference_t<Its>...>
54 template<
typename... Its>
55 auto CPP_auto_fun(
operator())(Its... its)
57 return invoke(fn_, *its...)
59 template<typename... Its>
60 auto CPP_auto_fun(
operator())(Its... its)(
const)
62 return invoke((Fn
const &)fn_, *its...)
66 template<typename... Its>
67 auto CPP_auto_fun(
operator())(
move_tag, Its... its)
71 aux::move(invoke(fn_, *its...)))
73 template<
typename... Its>
74 auto CPP_auto_fun(
operator())(
move_tag, Its... its)(
const)
78 aux::move(invoke((Fn
const &)fn_, *its...)))
98#include <range/v3/detail/epilogue.hpp>
meta::if_c< std::is_reference< R >::value, meta::_t< std::remove_reference< R > > &&, detail::decay_t< R > > move_t
Definition move.hpp:59
Definition range_fwd.hpp:492
Definition indirect.hpp:84
Definition indirect.hpp:34
Definition range_fwd.hpp:494