Skip to content

Commit 50de083

Browse files
committed
P3923R0: Re NB US 221-339 (C++26 CD)
Fixes NB US 221-339 (C++26 CD).
1 parent a586131 commit 50de083

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

source/exec.tex

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4204,6 +4204,27 @@
42044204
if \tcode{Tag} denotes a type other than \tcode{set_value_t} or
42054205
if the expression \tcode{f(auto(shape), auto(shape), args...)} is well-formed.
42064206

4207+
\begin{itemdecl}
4208+
template<class Sndr, class... Env>
4209+
static consteval void \exposid{check-types}();
4210+
\end{itemdecl}
4211+
4212+
\begin{itemdescr}
4213+
\pnum
4214+
\effects
4215+
Equivalent to:
4216+
\begin{codeblock}
4217+
auto cs = get_completion_signatures<@\exposid{child-type}@<Sndr>, @\exposid{FWD-ENV-T}@(Env)...>();
4218+
auto fn = []<class... Ts>(set_value_t(*)(Ts...)) {
4219+
using data_type = @\exposid{data-type}@<Sndr>;
4220+
if constexpr (!invocable<remove_cvref_t<@\exposid{child-type}@<data_type>&,
4221+
remove_cvref_t<@\exposid{data-type}@<data_type>>, Ts&...>)
4222+
throw @\placeholder{unspecified-exception}@();
4223+
};
4224+
cs.@\exposid{for-each}@(@\exposid{overload-set}@(fn, [](auto){}));
4225+
\end{codeblock}
4226+
\end{itemdescr}
4227+
42074228
\pnum
42084229
The exposition-only class template \exposid{impls-for}\iref{exec.snd.expos}
42094230
is specialized for \tcode{bulk_unchunked_t} as follows:
@@ -4212,6 +4233,9 @@
42124233
template<>
42134234
struct @\exposid{impls-for}@<bulk_unchunked_t> : @\exposid{default-impls}@ {
42144235
static constexpr auto @\exposid{complete}@ = @\seebelow@;
4236+
4237+
template<class Sndr, class... Env>
4238+
static consteval void \exposid{check-types}();
42154239
};
42164240
}
42174241
\end{codeblock}
@@ -4253,7 +4277,9 @@
42534277
\begin{codeblock}
42544278
auto cs = get_completion_signatures<@\exposid{child-type}@<Sndr>, @\exposid{FWD-ENV-T}@(Env)...>();
42554279
auto fn = []<class... Ts>(set_value_t(*)(Ts...)) {
4256-
if constexpr (!@\libconcept{invocable}@<remove_cvref_t<@\exposid{data-type}@<Sndr>>, Ts&...>)
4280+
using data_type = @\exposid{data-type}@<Sndr>;
4281+
if constexpr (!@\libconcept{invocable}@<remove_cvref_t<@\exposid{child-type}@<data_type>&,
4282+
remove_cvref_t<@\exposid{data-type}@<data_type>>, Ts&...>)
42574283
throw @\placeholder{unspecified-exception}@();
42584284
};
42594285
cs.@\exposid{for-each}@(@\exposid{overload-set}@(fn, [](auto){}));

0 commit comments

Comments
 (0)