Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

transform_sender compile error with msvc #1311

Open
koloshmet opened this issue Apr 24, 2024 · 0 comments
Open

transform_sender compile error with msvc #1311

koloshmet opened this issue Apr 24, 2024 · 0 comments

Comments

@koloshmet
Copy link
Contributor

koloshmet commented Apr 24, 2024

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.
@koloshmet koloshmet changed the title Transform transform_sender compile error with mdvc Apr 24, 2024
@koloshmet koloshmet changed the title transform_sender compile error with mdvc transform_sender compile error with msvc Apr 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant