|
4204 | 4204 | if \tcode{Tag} denotes a type other than \tcode{set_value_t} or |
4205 | 4205 | if the expression \tcode{f(auto(shape), auto(shape), args...)} is well-formed. |
4206 | 4206 |
|
| 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 | + |
4207 | 4228 | \pnum |
4208 | 4229 | The exposition-only class template \exposid{impls-for}\iref{exec.snd.expos} |
4209 | 4230 | is specialized for \tcode{bulk_unchunked_t} as follows: |
|
4212 | 4233 | template<> |
4213 | 4234 | struct @\exposid{impls-for}@<bulk_unchunked_t> : @\exposid{default-impls}@ { |
4214 | 4235 | static constexpr auto @\exposid{complete}@ = @\seebelow@; |
| 4236 | + |
| 4237 | + template<class Sndr, class... Env> |
| 4238 | + static consteval void \exposid{check-types}(); |
4215 | 4239 | }; |
4216 | 4240 | } |
4217 | 4241 | \end{codeblock} |
|
4253 | 4277 | \begin{codeblock} |
4254 | 4278 | auto cs = get_completion_signatures<@\exposid{child-type}@<Sndr>, @\exposid{FWD-ENV-T}@(Env)...>(); |
4255 | 4279 | 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&...>) |
4257 | 4283 | throw @\placeholder{unspecified-exception}@(); |
4258 | 4284 | }; |
4259 | 4285 | cs.@\exposid{for-each}@(@\exposid{overload-set}@(fn, [](auto){})); |
|
0 commit comments