A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://github.com/cplusplus/sender-receiver/issues/168 below:

`default_domain::transform_env` should be returning `FWD-ENV(env)` · Issue #168 · cplusplus/sender-receiver · GitHub

When writing a generic recursive sender transform, you need to ability to unpack an unknown sender S and recursively transform the children.

For that, it can be useful to know the type of the environment that S will use when connecting its child senders, which is why transform_env exists.

For an environment E and a sender S with tag T child C, the expression default_domain().transform_env( S, E ) should return an environment E2 that is identical to the environment of the receiver that S uses to connect C.

default_domain().transform_env( S, E ) will first check whether T().transform_env( S, E ) is well-formed. If so, it will return that (e.g. when_all_t has a transform_env that adds a stop token to the environment).

If T().transform_env(S,E) is not well-formed, what should default_domain::transform_env do? At present, it returns E unmodified.

But [exec.adapt.general] has this:

[unless otherwise specified, when] a parent sender is connected to a receiver rcvr, any receiver used to connect a child sender has an associated environment equal to FWD-ENV(get_env(rcvr)).

So the correct thing for default_domain::transform_env to do is to return FWD-ENV(get_env(rcvr)).

Proposed resolution

Change [exec.domain.default] para 5 as follows:

 template<sender Sndr, queryable Env>
   constexpr queryable decltype(auto) transform_env(Sndr&& sndr, Env&& env) noexcept;
 
 5. Let e be the expression
 
     tag_of_t<Sndr>().transform_env(std::forward<Sndr>(sndr), std::forward<Env>(env))
 
-  if that expression is well-formed; otherwise, static_cast<Env>(std::forward<Env>(env)).
+  if that expression is well-formed; otherwise, FWD-ENV(std::forward<Env>(env)).

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4