Skip to content

Commit c4ee9ec

Browse files
committed
P2136R3 invoke_r
1 parent fb3bea8 commit c4ee9ec

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

source/support.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,7 @@
622622
#define @\defnlibxname{cpp_lib_integral_constant_callable}@ 201304L // also in \libheader{type_traits}
623623
#define @\defnlibxname{cpp_lib_interpolate}@ 201902L // also in \libheader{cmath}, \libheader{numeric}
624624
#define @\defnlibxname{cpp_lib_invoke}@ 201411L // also in \libheader{functional}
625+
#define @\defnlibxname{cpp_lib_invoke_r}@ 202106L // also in \libheader{functional}
625626
#define @\defnlibxname{cpp_lib_is_aggregate}@ 201703L // also in \libheader{type_traits}
626627
#define @\defnlibxname{cpp_lib_is_constant_evaluated}@ 201811L // also in \libheader{type_traits}
627628
#define @\defnlibxname{cpp_lib_is_final}@ 201402L // also in \libheader{type_traits}

source/utilities.tex

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13096,6 +13096,10 @@
1309613096
constexpr invoke_result_t<F, Args...> invoke(F&& f, Args&&... args)
1309713097
noexcept(is_nothrow_invocable_v<F, Args...>);
1309813098

13099+
template<class R, class F, class... Args>
13100+
constexpr R invoke_r(F&& f, Args&&... args)
13101+
noexcept(is_nothrow_invocable_r_v<R, F, Args...>);
13102+
1309913103
// \ref{refwrap}, \tcode{reference_wrapper}
1310013104
template<class T> class reference_wrapper;
1310113105

@@ -13399,7 +13403,7 @@
1339913403
a given standard library function template have the same type
1340013404
if the types of their corresponding state entities are the same.
1340113405

13402-
\rSec2[func.invoke]{Function template \tcode{invoke}}
13406+
\rSec2[func.invoke]{\tcode{invoke} functions}
1340313407
\indexlibraryglobal{invoke}%
1340413408
\indexlibrary{invoke@\tcode{\placeholder{INVOKE}}}%
1340513409
\begin{itemdecl}
@@ -13409,11 +13413,32 @@
1340913413
\end{itemdecl}
1341013414

1341113415
\begin{itemdescr}
13416+
\pnum
13417+
\constraints
13418+
\tcode{is_invocable_v<F, Args...>} is \tcode{true}.
13419+
1341213420
\pnum
1341313421
\returns
1341413422
\tcode{\placeholdernc{INVOKE}(std::forward<F>(f), std::forward<Args>(args)...)}\iref{func.require}.
1341513423
\end{itemdescr}
1341613424

13425+
\indexlibraryglobal{invoke_r}%
13426+
\begin{itemdecl}
13427+
template<class R, class F, class... Args>
13428+
constexpr R invoke_r(F&& f, Args&&... args)
13429+
noexcept(is_nothrow_invocable_r_v<R, F, Args...>);
13430+
\end{itemdecl}
13431+
13432+
\begin{itemdescr}
13433+
\pnum
13434+
\constraints
13435+
\tcode{is_invocable_r_v<R, F, Args...>} is \tcode{true}.
13436+
13437+
\pnum
13438+
\returns
13439+
\tcode{\placeholdernc{INVOKE}<R>(std::forward<F>(f), std::forward<Args>(args)...)}\iref{func.require}.
13440+
\end{itemdescr}
13441+
1341713442
\rSec2[refwrap]{Class template \tcode{reference_wrapper}}
1341813443

1341913444
\rSec3[refwrap.general]{General}

0 commit comments

Comments
 (0)