|
4223 | 4223 | if \tcode{Tag} denotes a type other than \tcode{set_value_t} or |
4224 | 4224 | if the expression \tcode{f(auto(shape), auto(shape), args...)} is well-formed. |
4225 | 4225 |
|
| 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 | + |
4226 | 4247 | \pnum |
4227 | 4248 | The exposition-only class template \exposid{impls-for}\iref{exec.snd.expos} |
4228 | 4249 | is specialized for \tcode{bulk_unchunked_t} as follows: |
|
4231 | 4252 | template<> |
4232 | 4253 | struct @\exposid{impls-for}@<bulk_unchunked_t> : @\exposid{default-impls}@ { |
4233 | 4254 | static constexpr auto @\exposid{complete}@ = @\seebelow@; |
| 4255 | + |
| 4256 | + template<class Sndr, class... Env> |
| 4257 | + static consteval void \exposid{check-types}(); |
4234 | 4258 | }; |
4235 | 4259 | } |
4236 | 4260 | \end{codeblock} |
|
4272 | 4296 | \begin{codeblock} |
4273 | 4297 | auto cs = get_completion_signatures<@\exposid{child-type}@<Sndr>, @\exposid{FWD-ENV-T}@(Env)...>(); |
4274 | 4298 | 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&...>) |
4276 | 4302 | throw @\placeholder{unspecified-exception}@(); |
4277 | 4303 | }; |
4278 | 4304 | cs.@\exposid{for-each}@(@\exposid{overload-set}@(fn, [](auto){})); |
|
0 commit comments