1349013490 constexpr invoke_result_t<F, Args...> invoke(F&& f, Args&&... args)
1349113491 noexcept(is_nothrow_invocable_v<F, Args...>);
1349213492
13493+ template<class R, class F, class... Args>
13494+ constexpr R invoke_r(F&& f, Args&&... args)
13495+ noexcept(is_nothrow_invocable_r_v<R, F, Args...>);
13496+
1349313497 // \ref{refwrap}, \tcode{reference_wrapper}
1349413498 template<class T> class reference_wrapper;
1349513499
1379313797a given standard library function template have the same type
1379413798if the types of their corresponding state entities are the same.
1379513799
13796- \rSec2[func.invoke]{Function template \tcode{invoke}}
13800+ \rSec2[func.invoke]{\tcode{invoke} functions }
1379713801\indexlibraryglobal{invoke}%
1379813802\indexlibrary{invoke@\tcode{\placeholder{INVOKE}}}%
1379913803\begin{itemdecl}
@@ -13803,11 +13807,32 @@
1380313807\end{itemdecl}
1380413808
1380513809\begin{itemdescr}
13810+ \pnum
13811+ \constraints
13812+ \tcode{is_invocable_v<F, Args...>} is \tcode{true}.
13813+
1380613814\pnum
1380713815\returns
1380813816\tcode{\placeholdernc{INVOKE}(std::forward<F>(f), std::forward<Args>(args)...)}\iref{func.require}.
1380913817\end{itemdescr}
1381013818
13819+ \indexlibraryglobal{invoke_r}%
13820+ \begin{itemdecl}
13821+ template<class R, class F, class... Args>
13822+ constexpr R invoke_r(F&& f, Args&&... args)
13823+ noexcept(is_nothrow_invocable_r_v<R, F, Args...>);
13824+ \end{itemdecl}
13825+
13826+ \begin{itemdescr}
13827+ \pnum
13828+ \constraints
13829+ \tcode{is_invocable_r_v<R, F, Args...>} is \tcode{true}.
13830+
13831+ \pnum
13832+ \returns
13833+ \tcode{\placeholdernc{INVOKE}<R>(std::forward<F>(f), std::forward<Args>(args)...)}\iref{func.require}.
13834+ \end{itemdescr}
13835+
1381113836\rSec2[refwrap]{Class template \tcode{reference_wrapper}}
1381213837
1381313838\rSec3[refwrap.general]{General}
0 commit comments