NVIDIA/stdexec

transform_sender compile error with msvc

koloshmet opened this issue · 0 comments

MSVC reports "expression did not evaluate to a constant" at this line

noexcept(__nothrow_callable<__transform_sender_1, _Domain, _Sender, const _Env&...>)

of __transform_sender's operator() when I combine sender that requires transformation and let_value

I believe this is the bug of msvc, but probably it requires some workaround. To be honest I can't imagine how to do it, so just report it here.

The error appeared after I switched to the version of stdexec that announced receiver_ref in let_value. It reproduces only with senders that assume transformation before connecting in combination with let_value

Minimal reproducible example

#define CATCH_CONFIG_MAIN
#include <catch2/catch.hpp>

#include <stdexec/execution.hpp>

struct Domain {
    template <stdexec::sender Sender> requires stdexec::tag_invocable<Domain, Sender&&>
    auto transform_sender(Sender&& s) const noexcept {
        return stdexec::tag_invoke(*this, std::forward<Sender>(s));
    }

    template <stdexec::sender Sender, typename Env> requires stdexec::tag_invocable<Domain, Sender&&>
    auto transform_sender(Sender&& s, const Env&) const noexcept {
        return this->transform_sender(std::forward<Sender>(s));
    }
};

struct FatalOpState {};

template <stdexec::sender TSender>
struct IncompleteSender {
    using sender_concept = stdexec::sender_t;

    IncompleteSender(TSender s) noexcept: Sender(std::move(s)) {}

    template <stdexec::receiver Receiver>
    friend auto tag_invoke(stdexec::connect_t, IncompleteSender, Receiver&&) { return FatalOpState{}; }
    friend auto tag_invoke(stdexec::get_env_t, const IncompleteSender& s) noexcept { return stdexec::get_env(s.Sender); }
    template <typename Env>
    friend auto tag_invoke(stdexec::get_completion_signatures_t, const IncompleteSender& s, const Env& e) noexcept {
        return stdexec::get_completion_signatures(s.Sender, e);
    }

    TSender Sender;
};

template <stdexec::sender TSender>
auto tag_invoke(Domain, IncompleteSender<TSender> s) {
    return std::move(s.Sender);
}

struct Scheduler {
    struct Env {
        template <typename T>
        friend auto tag_invoke(stdexec::get_completion_scheduler_t<T>, const Env&) noexcept { return Scheduler{}; }
        friend auto tag_invoke(stdexec::get_domain_t, const Env&) noexcept { return Domain{}; }
    };

    struct OpState {
        friend void tag_invoke(stdexec::start_t, OpState&) noexcept {}
    };

    struct Sender {
        using sender_concept = stdexec::sender_t;
        using completion_signatures = stdexec::completion_signatures<stdexec::set_value_t(), stdexec::set_stopped_t()>;

        template <stdexec::receiver Receiver>
        friend auto tag_invoke(stdexec::connect_t, Sender, Receiver&&) { return OpState{}; }
        friend auto tag_invoke(stdexec::get_env_t, const Sender&) noexcept { return Env{}; }
    };

    friend auto tag_invoke(stdexec::get_domain_t, const Scheduler&) noexcept { return Domain{}; }
    friend auto tag_invoke(stdexec::schedule_t, Scheduler) noexcept { return Sender{}; };
};

struct Env {
    friend auto tag_invoke(stdexec::get_scheduler_t, const Env&) noexcept { return Scheduler{}; }
    friend auto tag_invoke(stdexec::get_domain_t, const Env&) noexcept { return Domain{}; }
};

TEST_CASE("It's broken") {
    Scheduler s;

    auto conn =
        stdexec::let_value(
            IncompleteSender(
                stdexec::let_value(
                    stdexec::schedule(s),
                    [&]() noexcept {
                        return stdexec::just(1);
                    })),
            [&](int n) noexcept {
                return stdexec::just();
            });
    auto x = stdexec::get_completion_signatures(conn, Env{});
}

Error produced by MSVC 19.39

>------ Build started: Project: CMakeLists, Configuration: RelWithDebInfo ------
  [1/2] Building CXX object tests\CMakeFiles\let_test.dir\let_value.cpp.obj
  FAILED: tests/CMakeFiles/let_test.dir/let_value.cpp.obj 
  C:\PROGRA~1\MICROS~1\2022\COMMUN~1\VC\Tools\MSVC\1439~1.335\bin\HOSTAR~1\x64\cl.exe  /nologo /TP  -IC:\Users\koloshmet\Programming\uvexec\build-ci\_deps\catch2-src\single_include -IC:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include /DWIN32 /D_WINDOWS /EHsc /Zi /O2 /Ob1 /DNDEBUG -std:c++20 -MD /Zc:__cplusplus /Zc:preprocessor /showIncludes /Fotests\CMakeFiles\let_test.dir\let_value.cpp.obj /Fdtests\CMakeFiles\let_test.dir\ /FS -c C:\Users\koloshmet\Programming\uvexec\tests\let_value.cpp
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(667): error C2131: expression did not evaluate to a constant
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(667): note: failure was caused by a read of an uninitialized symbol
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(667): note: see usage of 'stdexec::__nothrow_callable<stdexec::__domain::__transform_sender_1,stdexec::dependent_domain,stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,const _Tp&>'
          with
          [
              _Tp=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(667): note: the template instantiation context (the oldest one first) is
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(859): note: see reference to function template instantiation 'auto stdexec::__get_completion_signatures::get_completion_signatures_t::__impl<_Sender,_Env>(void)' being compiled
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon> &,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(821): note: see reference to alias template instantiation 'stdexec::__get_completion_signatures::__tfx_sender<_Sender,_Env>' being compiled
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon> &,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(801): note: see reference to alias template instantiation 'stdexec::transform_sender_result_t<Domain,_Sender,_Env>' being compiled
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon> &,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(711): note: see reference to alias template instantiation 'stdexec::__call_result_t<stdexec::transform_sender_t,Domain,_Sender,_Env>' being compiled
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon> &,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__meta.hpp(762): note: while compiling class template member function 'decltype(auto) stdexec::__domain::__transform_dependent_sender::operator ()<_Tp,stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>&,Env>(_Domain,_Sender,const _Env &) noexcept(<expr>) const'
          with
          [
              _Tp=Domain,
              _Domain=Domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon> &,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(692): note: while compiling class template member function 'decltype(auto) stdexec::dependent_domain::transform_sender<_Tp&,_Env>(_Sender,const _Env &) noexcept(<expr>) const'
          with
          [
              _Tp=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Env=Env,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon> &
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(743): note: see reference to function template instantiation 'bool stdexec::dependent_domain::__is_nothrow_transform_sender<_Sender,_Env>(void) noexcept' being compiled
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon> &,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(584): note: while compiling class template member function 'unknown-type stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>::apply(_Sender &&,_ApplyFn &&) noexcept(<expr>)'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(587): note: see reference to alias template instantiation 'stdexec::__call_result_t<stdexec::__detail::__captures::<lambda_1>&,stdexec::__cplr,_ApplyFn>' being compiled
          with
          [
              _ApplyFn=stdexec::dependent_domain::__is_nothrow_transform_sender::<lambda_1>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(465): note: while compiling class template member function 'unknown-type stdexec::__detail::__captures::<lambda_1>::operator ()(_Cvref,_Fun &&) noexcept(<expr>)'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(463): note: see reference to alias template instantiation 'stdexec::__call_result_t<_Tp,_Tag,____C_A_T_C_H____T_E_S_T____0::<lambda_2>&,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>>&>' being compiled
          with
          [
              _Tp=stdexec::dependent_domain::__is_nothrow_transform_sender::<lambda_1>,
              _Tag=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__meta.hpp(762): note: see reference to function template instantiation 'auto stdexec::dependent_domain::__is_nothrow_transform_sender::<lambda_1>::operator ()<_Tp,____C_A_T_C_H____T_E_S_T____0::<lambda_2>&,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>>&>(_Tag,_Data,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>> &) const' being compiled
          with
          [
              _Tp=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>,
              _Tag=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>,
              _Data=____C_A_T_C_H____T_E_S_T____0::<lambda_2> &
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(734): note: while compiling class template member function 'decltype(auto) stdexec::__domain::__transform_sender::operator ()<stdexec::__domain::__transform_sender,stdexec::dependent_domain,_Tp,Env>(_Domain,_Sender &&,const Env &) noexcept(<expr>) const'
          with
          [
              _Tp=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Domain=stdexec::dependent_domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(667): note: see reference to variable template 'bool __nothrow_callable<stdexec::__domain::__transform_sender_1,stdexec::dependent_domain,stdexec::__sexpr<stdexec::A0x2990fd92::<lambda_71_>{},stdexec::A0x2990fd92::__anon>,Env const &>' being compiled
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__concepts.hpp(31): note: see reference to variable template 'bool __callable<stdexec::__domain::__transform_sender_1,stdexec::dependent_domain,stdexec::__sexpr<stdexec::A0x2990fd92::<lambda_71_>{},stdexec::A0x2990fd92::__anon>,Env const &>' being compiled
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__concepts.hpp(27): note: while compiling class template member function 'decltype(auto) stdexec::__domain::__transform_sender_1::operator ()<_Domain,_Sender,_Tp>(_Domain,_Sender &&,const _Tp &) noexcept(<expr>) const'
          with
          [
              _Domain=stdexec::dependent_domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Tp=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(649): note: see reference to function template instantiation 'bool stdexec::__domain::__transform_sender_1::__is_nothrow<_Domain,_Sender,const _Tp&>(void) noexcept' being compiled
          with
          [
              _Domain=stdexec::dependent_domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Tp=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(634): note: see reference to variable template 'bool __has_transform_sender<stdexec::dependent_domain,stdexec::__sexpr<stdexec::A0x2990fd92::<lambda_71_>{},stdexec::A0x2990fd92::__anon>,Env const &>' being compiled
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail/__domain.hpp(57): note: while compiling class template member function 'decltype(auto) stdexec::dependent_domain::transform_sender<_Sender,_Tp>(_Sender &&,const _Env &) noexcept(<expr>) const'
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Tp=Env,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(743): note: see reference to function template instantiation 'bool stdexec::dependent_domain::__is_nothrow_transform_sender<_Sender,_Env>(void) noexcept' being compiled
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(584): note: while compiling class template member function 'unknown-type stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>::apply(_Sender &&,_ApplyFn &&) noexcept(<expr>)'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(587): note: see reference to alias template instantiation 'stdexec::__call_result_t<stdexec::__detail::__captures::<lambda_1>&&,stdexec::__cp,_ApplyFn>' being compiled
          with
          [
              _ApplyFn=stdexec::dependent_domain::__is_nothrow_transform_sender::<lambda_1>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(465): note: while compiling class template member function 'unknown-type stdexec::__detail::__captures::<lambda_1>::operator ()(_Cvref,_Fun &&) noexcept(<expr>)'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(463): note: see reference to alias template instantiation 'stdexec::__call_result_t<_Tp,_Tag,____C_A_T_C_H____T_E_S_T____0::<lambda_2>,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>>>' being compiled
          with
          [
              _Tp=stdexec::dependent_domain::__is_nothrow_transform_sender::<lambda_1>,
              _Tag=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__meta.hpp(762): note: see reference to function template instantiation 'auto stdexec::dependent_domain::__is_nothrow_transform_sender::<lambda_1>::operator ()<_Tp,____C_A_T_C_H____T_E_S_T____0::<lambda_2>,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>>>(_Tag,_Data &&,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>> &&) const' being compiled
          with
          [
              _Tp=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>,
              _Tag=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>,
              _Data=____C_A_T_C_H____T_E_S_T____0::<lambda_2>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(734): note: while compiling class template member function 'decltype(auto) stdexec::__domain::__transform_sender::operator ()<stdexec::__domain::__transform_sender,stdexec::dependent_domain,_Tp,Env>(_Domain,_Sender &&,const Env &) noexcept(<expr>) const'
          with
          [
              _Tp=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Domain=stdexec::dependent_domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>
          ]
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(649): error C2131: expression did not evaluate to a constant
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(649): note: failure was caused by call of undefined function or one not declared 'constexpr'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(649): note: see usage of 'stdexec::__domain::__transform_sender_1::__is_nothrow'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(649): note: the template instantiation context (the oldest one first) is
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(718): note: see reference to function template instantiation 'decltype(auto) stdexec::__domain::__transform_sender::operator ()<stdexec::__domain::__transform_sender,stdexec::dependent_domain,_Tp,Env>(_Domain,_Sender &&,const Env &) const' being compiled
          with
          [
              _Tp=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Domain=stdexec::dependent_domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(668): note: see reference to alias template instantiation 'stdexec::__call_result_t<stdexec::__domain::__transform_sender_1,stdexec::dependent_domain,_Tp,const Env&>' being compiled
          with
          [
              _Tp=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__meta.hpp(762): note: while compiling class template member function 'decltype(auto) stdexec::__domain::__transform_sender_1::operator ()<_Domain,_Sender,_Tp>(_Domain,_Sender &&,const _Tp &) noexcept(<expr>) const'
          with
          [
              _Domain=stdexec::dependent_domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Tp=Env
          ]
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(763): error C3779: 'stdexec::__domain::__transform_sender::operator ()': a function that returns 'decltype(auto)' cannot be used before it is defined
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(666): note: see declaration of 'stdexec::__domain::__transform_sender::operator ()'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(763): note: the template instantiation context (the oldest one first) is
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__meta.hpp(762): note: see reference to function template instantiation 'decltype(auto) stdexec::__domain::__transform_sender_1::operator ()<_Domain,_Sender,_Tp>(_Domain,_Sender &&,const _Tp &) const' being compiled
          with
          [
              _Domain=stdexec::dependent_domain,
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Tp=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(650): note: see reference to variable template 'bool __has_transform_sender<stdexec::dependent_domain,stdexec::__sexpr<stdexec::A0x2990fd92::<lambda_71_>{},stdexec::A0x2990fd92::__anon>,Env>' being compiled
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail/__domain.hpp(56): note: see reference to function template instantiation 'decltype(auto) stdexec::dependent_domain::transform_sender<_Sender,_Tp>(_Sender &&,const _Env &) const' being compiled
          with
          [
              _Sender=stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>,
              _Tp=Env,
              _Env=Env
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(584): note: while compiling class template member function 'unknown-type stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_71_>{},stdexec::`anonymous-namespace'::__anon>::apply(_Sender &&,_ApplyFn &&) noexcept(<expr>)'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(587): note: see reference to alias template instantiation 'stdexec::__call_result_t<stdexec::__detail::__captures::<lambda_1>&&,stdexec::__cp,_ApplyFn>' being compiled
          with
          [
              _ApplyFn=stdexec::dependent_domain::transform_sender::<lambda_1>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(465): note: while compiling class template member function 'unknown-type stdexec::__detail::__captures::<lambda_1>::operator ()(_Cvref,_Fun &&) noexcept(<expr>)'
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(463): note: see reference to alias template instantiation 'stdexec::__call_result_t<_Tp,_Tag,____C_A_T_C_H____T_E_S_T____0::<lambda_2>,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>>>' being compiled
          with
          [
              _Tp=stdexec::dependent_domain::transform_sender::<lambda_1>,
              _Tag=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>
          ]
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__meta.hpp(762): note: see reference to function template instantiation 'auto stdexec::dependent_domain::transform_sender::<lambda_1>::operator ()<_Tp,____C_A_T_C_H____T_E_S_T____0::<lambda_2>,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>>>(_Tag,_Data &&,IncompleteSender<stdexec::__sexpr<stdexec::`anonymous-namespace'::<lambda_60_>{},stdexec::`anonymous-namespace'::__anon>> &&) const' being compiled
          with
          [
              _Tp=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>,
              _Tag=stdexec::__let::__let_t<stdexec::__receivers::set_value_t,stdexec::dependent_domain>,
              _Data=____C_A_T_C_H____T_E_S_T____0::<lambda_2>
          ]
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(748): error C3889: call to object of class type 'stdexec::__detail::__sexpr_apply_t': no matching call operator found
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(634): note: could be 'unknown-type stdexec::__detail::__sexpr_apply_t::operator ()(_Sender &&,_ApplyFn &&) noexcept(<expr>) const'
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(721): error C3889: call to object of class type 'stdexec::__detail::__sexpr_apply_t': no matching call operator found
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\__detail\__basic_sender.hpp(634): note: could be 'unknown-type stdexec::__detail::__sexpr_apply_t::operator ()(_Sender &&,_ApplyFn &&) noexcept(<expr>) const'
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(721): error C2651: 'unknown-type': left of '::' must be a class, struct or union
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(721): error C2062: type 'unknown-type' unexpected
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(737): error C2039: 'value': is not a member of '`global namespace''
C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec\execution.hpp(743): error C3615: constexpr function 'stdexec::dependent_domain::__is_nothrow_transform_sender' cannot result in a constant expression
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(718): note: failure was caused by control reaching the end of a constexpr function
C:\Users\koloshmet\Programming\uvexec\tests\let_value.cpp(90): error C3889: call to object of class type 'stdexec::__get_completion_signatures::get_completion_signatures_t': no matching call operator found
  C:\Users\koloshmet\Programming\uvexec\build-ci\_deps\stdexec-src\include\stdexec/execution.hpp(859): note: could be 'unknown-type stdexec::__get_completion_signatures::get_completion_signatures_t::operator ()(_Sender &&,const _Env &) noexcept const'
  ninja: build stopped: subcommand failed.