Skip to content

Commit 53be238

Browse files
eisenwavetkoeppe
authored andcommitted
P3923R0: Re NB US 221-339 (C++26 CD)
Fixes NB US 221-339 (C++26 CD).
1 parent e421465 commit 53be238

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
@@ -4223,6 +4223,27 @@
42234223
if \tcode{Tag} denotes a type other than \tcode{set_value_t} or
42244224
if the expression \tcode{f(auto(shape), auto(shape), args...)} is well-formed.
42254225

4226+
\begin{itemdecl}
4227+
template<class Sndr, class... Env>
4228+
static consteval void \exposid{check-types}();
4229+
\end{itemdecl}
4230+
4231+
\begin{itemdescr}
4232+
\pnum
4233+
\effects
4234+
Equivalent to:
4235+
\begin{codeblock}
4236+
auto cs = get_completion_signatures<@\exposid{child-type}@<Sndr>, @\exposid{FWD-ENV-T}@(Env)...>();
4237+
auto fn = []<class... Ts>(set_value_t(*)(Ts...)) {
4238+
using data_type = @\exposid{data-type}@<Sndr>;
4239+
if constexpr (!@\libconcept{invocable}@<remove_cvref_t<@\exposid{child-type}@<data_type>&,
4240+
remove_cvref_t<@\exposid{data-type}@<data_type>>, Ts&...>)
4241+
throw @\placeholder{unspecified-exception}@();
4242+
};
4243+
cs.@\exposid{for-each}@(@\exposid{overload-set}@(fn, [](auto){}));
4244+
\end{codeblock}
4245+
\end{itemdescr}
4246+
42264247
\pnum
42274248
The exposition-only class template \exposid{impls-for}\iref{exec.snd.expos}
42284249
is specialized for \tcode{bulk_unchunked_t} as follows:
@@ -4231,6 +4252,9 @@
42314252
template<>
42324253
struct @\exposid{impls-for}@<bulk_unchunked_t> : @\exposid{default-impls}@ {
42334254
static constexpr auto @\exposid{complete}@ = @\seebelow@;
4255+
4256+
template<class Sndr, class... Env>
4257+
static consteval void \exposid{check-types}();
42344258
};
42354259
}
42364260
\end{codeblock}
@@ -4272,7 +4296,9 @@
42724296
\begin{codeblock}
42734297
auto cs = get_completion_signatures<@\exposid{child-type}@<Sndr>, @\exposid{FWD-ENV-T}@(Env)...>();
42744298
auto fn = []<class... Ts>(set_value_t(*)(Ts...)) {
4275-
if constexpr (!@\libconcept{invocable}@<remove_cvref_t<@\exposid{data-type}@<Sndr>>, Ts&...>)
4299+
using data_type = @\exposid{data-type}@<Sndr>;
4300+
if constexpr (!@\libconcept{invocable}@<remove_cvref_t<@\exposid{child-type}@<data_type>&,
4301+
remove_cvref_t<@\exposid{data-type}@<data_type>>, Ts&...>)
42764302
throw @\placeholder{unspecified-exception}@();
42774303
};
42784304
cs.@\exposid{for-each}@(@\exposid{overload-set}@(fn, [](auto){}));

0 commit comments

Comments
 (0)