Skip to content

Compile failed on gcc-14 #1779

@lixin-wei

Description

@lixin-wei

gcc 14.2.0, sepecifically.

I've run git bisect, The issue was introduced in 1e21d78

In file included from /home/dev/stdexec/include/stdexec/execution.hpp:39,
                 from /home/dev/stdexec/test/test_common/receivers.hpp:20,
                 from /home/dev/stdexec/test/exec/async_scope/test_empty.cpp:1:
/home/dev/stdexec/include/stdexec/__detail/__let.hpp: In instantiation of ‘static consteval auto std::execution::__let::__let_impl<_SetTag>::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; _SetTag = std::execution::__rcvrs::set_value_t]’:
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:670:67:   required from ‘static consteval auto std::execution::__sexpr_impl<std::execution::__let::__let_t<_SetTag> >::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; _SetTag = std::execution::__rcvrs::set_value_t]’
  670 |       return STDEXEC::get_completion_signatures<__sndr_t, _Env...>();
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   [ skipping 5 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/dev/stdexec/include/stdexec/__detail/__starts_on.hpp:144:13:   required from ‘static consteval auto std::execution::__sexpr_impl<std::execution::__starts_on_ns::starts_on_t>::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
  144 |       using __sndr_t =
      |             ^~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__sender_concepts.hpp:62:50:   required from ‘auto [requires std::execution::__well_formed_sender<<placeholder>, >] std::execution::__starts_on_ns::starts_on_t::operator()(_Scheduler&&, _Sender&&) const [with _Scheduler = {anonymous}::impulse_scheduler&; _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>]’
   62 |     && __constant_completion_signatures<STDEXEC::get_completion_signatures<_Sender, _Env...>()>;
/home/dev/stdexec/test/exec/async_scope/test_empty.cpp:38:30:   required from here
   38 |     scope.spawn(ex::starts_on(sch, ex::just()));
      |                 ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:616:25: error: no class template named ‘__f’ in ‘struct std::execution::__let::__transform_signal_fn<std::execution::__rcvrs::set_value_t, typename std::decay<decltype (std::execution::__declval<std::execution::__let::__data<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__detail::__always<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__basic_sender<std::execution::__just::just_t, std::execution::__tup::__tuple<> > > > >().__fn)>::type>’
  616 |           if constexpr (__ok<__result_t>) {
      |                         ^~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:55: error: inconsistent deduction for auto return type: ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’ and then ‘std::execution::_ERROR_<>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:68: error: too many initializers for ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
      |                                                                    ^
/home/dev/stdexec/include/stdexec/__detail/__let.hpp: In instantiation of ‘static consteval auto std::execution::__let::__let_impl<_SetTag>::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t}; _SetTag = std::execution::__rcvrs::set_value_t]’:
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {__env::__fwd<exec::__scope::__spawn_env_>::__t}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__sender_concepts.hpp:62:50:   required by substitution of ‘template<class _Env, class _Sender>  requires (__movable_value<_Env>) && (sender_in<_Sender, decltype(((const std::execution::__env::__join_fn&)&std::execution::__env::__join)((__declval<_Env>)(), std::execution::__declval()))>) && (sender_to<typename exec::__scope::__nest_sender<typename std::execution::__i<_Ok<typename std::decay<_Tp2>::type>, _Ok<std::execution::__id_<__has_id<typename std::decay<_Tp2>::type> > > >::__f::__f<typename std::decay<_Tp2>::type> >::__t, typename exec::__scope::__spawn_rcvr<typename std::execution::__i<_Ok<_Ty>, _Ok<std::execution::__id_<__has_id<_Ty> > > >::__f::__f<_Ty> >::__t>) void exec::__scope::async_scope::spawn(_Sender&&, _Env) [with _Env = std::execution::__env::env<>; _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>]’
   62 |     && __constant_completion_signatures<STDEXEC::get_completion_signatures<_Sender, _Env...>()>;
/home/dev/stdexec/test/exec/async_scope/test_empty.cpp:38:16:   required from here
   38 |     scope.spawn(ex::starts_on(sch, ex::just()));
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:616:25: error: no class template named ‘__f’ in ‘struct std::execution::__let::__transform_signal_fn<std::execution::__rcvrs::set_value_t, typename std::decay<decltype (std::execution::__declval<std::execution::__let::__data<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__detail::__always<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__basic_sender<std::execution::__just::just_t, std::execution::__tup::__tuple<> > > > >().__fn)>::type, decltype (std::execution::__env::__join(__declval<decltype (__mk_env2<std::execution::__rcvrs::set_value_t>(__declval<decltype (std::execution::__declval<std::execution::__get_env::get_env_t>()(__declval<decltype (std::execution::__declval<std::execution::__let::__data<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__detail::__always<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__basic_sender<std::execution::__just::just_t, std::execution::__tup::__tuple<> > > > >().__sndr)>()))>(), std::execution::__declval<std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t>()))>(), std::execution::__declval<std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t>()))>’
  616 |           if constexpr (__ok<__result_t>) {
      |                         ^~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:55: error: inconsistent deduction for auto return type: ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’ and then ‘std::execution::_ERROR_<>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:68: error: too many initializers for ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
      |                                                                    ^
In file included from /home/dev/stdexec/include/exec/sequence/../../stdexec/execution.hpp:39,
                 from /home/dev/stdexec/include/exec/sequence/empty_sequence.hpp:19,
                 from /home/dev/stdexec/test/exec/sequence/test_merge_each_threaded.cpp:18:
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__let.hpp: In instantiation of ‘static consteval auto std::execution::__let::__let_impl<_SetTag>::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; _SetTag = std::execution::__rcvrs::set_value_t]’:
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__let.hpp:670:67:   required from ‘static consteval auto std::execution::__sexpr_impl<std::execution::__let::__let_t<_SetTag> >::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; _SetTag = std::execution::__rcvrs::set_value_t]’
  670 |       return STDEXEC::get_completion_signatures<__sndr_t, _Env...>();
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__concepts.hpp:45:31:   recursively required by substitution of ‘template<class _Sender>  requires (sender<_Sender>) && (__callable<const _Fn&, _Sender, const _As&...>) auto std::execution::__clsur::__closure<std::execution::__let::__let_t<std::execution::__rcvrs::set_value_t>, {anonymous}::<lambda()>::<lambda()> >::operator()(_Sender&&) const & [with _Sender = std::execution::__let::__let_t<std::execution::__rcvrs::set_value_t>]’
   45 |     static_cast<_Fun&&>(__fun)(static_cast<_As&&>(__as)...);
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__concepts.hpp:45:31:   required by substitution of ‘template<class _Sender, class _Closure>  requires (sender<_Sender>) && (__sender_adaptor_closure_for<_Closure, _Sender>) std::execution::__call_result_t<_Closure, _Sender> std::execution::__clsur::operator|(_Sender&&, _Closure&&) [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Closure = std::execution::__clsur::__closure<std::execution::__let::__let_t<std::execution::__rcvrs::set_value_t>, {anonymous}::<lambda()>::<lambda()> >]’
/home/dev/stdexec/test/exec/sequence/test_merge_each_threaded.cpp:167:13:   required from here
  167 |            });
      |             ^
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__let.hpp:616:25: error: no class template named ‘__f’ in ‘struct std::execution::__let::__transform_signal_fn<std::execution::__rcvrs::set_value_t, typename std::decay<decltype (std::execution::__declval<std::execution::__let::__data<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, {anonymous}::<lambda()>::<lambda()> > >().__fn)>::type>’
  616 |           if constexpr (__ok<__result_t>) {
      |                         ^~~~~~~~~~~~~~~~
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__let.hpp:619:55: error: inconsistent deduction for auto return type: ‘std::execution::completion_signatures<std::execution::__rcvrs::set_stopped_t()>’ and then ‘std::execution::_ERROR_<>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
/home/dev/stdexec/include/exec/sequence/../../stdexec/__detail/__let.hpp:619:68: error: too many initializers for ‘std::execution::completion_signatures<std::execution::__rcvrs::set_stopped_t()>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
      |                                                                    ^
/home/dev/stdexec/include/stdexec/__detail/__let.hpp: In instantiation of ‘static consteval auto std::execution::__let::__let_impl<_SetTag>::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {std::execution::__env::env<std::execution::__env::prop<std::execution::__queries::get_stop_token_t, std::execution::inplace_stop_token>, const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&>}; _SetTag = std::execution::__rcvrs::set_value_t]’:
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {std::execution::__env::env<std::execution::__env::prop<std::execution::__queries::get_stop_token_t, std::execution::inplace_stop_token>, const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&>}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {std::execution::__env::env<std::execution::__env::prop<std::execution::__queries::get_stop_token_t, std::execution::inplace_stop_token>, const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&>}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {__env::env<__env::prop<__queries::get_stop_token_t, inplace_stop_token>, const __env::__fwd<exec::__scope::__spawn_env_>::__t&>}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:241:66:   required by substitution of ‘template<class _Sender, class ... _Env>  requires  enable_sender<typename std::decay<_Tp>::type> using std::execution::__completion_signatures_of_t = decltype (get_completion_signatures<_Sender, _Env ...>()) [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {std::execution::__env::env<std::execution::__env::prop<std::execution::__queries::get_stop_token_t, std::execution::inplace_stop_token>, const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&>}]’
  241 |     decltype(STDEXEC::get_completion_signatures<_Sender, _Env...>());
/home/dev/stdexec/include/exec/async_scope.hpp:282:31:   required by substitution of ‘template<class _Self, class ... _Env>  requires  __decays_to<_Self, exec::__scope::__nest_sender<_ConstrainedId>::__t> static consteval std::execution::__completion_signatures_of_t<typename decltype (__cpcvr<_Self>)::__f<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()> >, decltype (exec::make_env(__declval<_Env>(), std::execution::__declval<std::execution::__env::prop<std::execution::__queries::get_stop_token_t, std::execution::inplace_stop_token> >()))...> exec::__scope::__nest_sender<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()> >::__t::get_completion_signatures() [with _Self = exec::__scope::__nest_sender<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()> >::__t; _Env = {const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&}]’
  282 |         static consteval auto get_completion_signatures()
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = exec::__scope::__nest_sender<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()> >::__t; _Env = {const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = exec::__scope::__nest_sender<{anonymous}::__sexpr<<lambda closure object><lambda()>()> >::__t; _Env = {const __env::__fwd<exec::__scope::__spawn_env_>::__t&}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__sender_concepts.hpp:62:50:   required by substitution of ‘template<class _Env, class _Sender>  requires (__movable_value<_Env>) && (sender_in<_Sender, decltype(((const std::execution::__env::__join_fn&)&std::execution::__env::__join)((__declval<_Env>)(), std::execution::__declval()))>) && (sender_to<typename exec::__scope::__nest_sender<typename std::execution::__i<_Ok<typename std::decay<_Tp2>::type>, _Ok<std::execution::__id_<__has_id<typename std::decay<_Tp2>::type> > > >::__f::__f<typename std::decay<_Tp2>::type> >::__t, typename exec::__scope::__spawn_rcvr<typename std::execution::__i<_Ok<_Ty>, _Ok<std::execution::__id_<__has_id<_Ty> > > >::__f::__f<_Ty> >::__t>) void exec::__scope::async_scope::spawn(_Sender&&, _Env) [with _Env = std::execution::__env::env<>; _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>]’
   62 |     && __constant_completion_signatures<STDEXEC::get_completion_signatures<_Sender, _Env...>()>;
/home/dev/stdexec/test/exec/async_scope/test_empty.cpp:38:16:   required from here
   38 |     scope.spawn(ex::starts_on(sch, ex::just()));
      |     ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:616:25: error: no class template named ‘__f’ in ‘struct std::execution::__let::__transform_signal_fn<std::execution::__rcvrs::set_value_t, typename std::decay<decltype (std::execution::__declval<std::execution::__let::__data<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__detail::__always<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__basic_sender<std::execution::__just::just_t, std::execution::__tup::__tuple<> > > > >().__fn)>::type, decltype (std::execution::__env::__join(__declval<decltype (__mk_env2<std::execution::__rcvrs::set_value_t>(__declval<decltype (std::execution::__declval<std::execution::__get_env::get_env_t>()(__declval<decltype (std::execution::__declval<std::execution::__let::__data<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__detail::__always<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__basic_sender<std::execution::__just::just_t, std::execution::__tup::__tuple<> > > > >().__sndr)>()))>(), std::execution::__declval<std::execution::__env::env<std::execution::__env::prop<std::execution::__queries::get_stop_token_t, std::execution::inplace_stop_token>, const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&> >()))>(), std::execution::__declval<std::execution::__env::env<std::execution::__env::prop<std::execution::__queries::get_stop_token_t, std::execution::inplace_stop_token>, const std::execution::__env::__fwd<exec::__scope::__spawn_env_>::__t&> >()))>’
  616 |           if constexpr (__ok<__result_t>) {
      |                         ^~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:55: error: inconsistent deduction for auto return type: ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’ and then ‘std::execution::_ERROR_<>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:68: error: too many initializers for ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
      |                                                                    ^
/home/dev/stdexec/include/stdexec/__detail/__let.hpp: In instantiation of ‘static consteval auto std::execution::__let::__let_impl<_SetTag>::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; _SetTag = std::execution::__rcvrs::set_value_t]’:
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:670:67:   required from ‘static consteval auto std::execution::__sexpr_impl<std::execution::__let::__let_t<_SetTag> >::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; _SetTag = std::execution::__rcvrs::set_value_t]’
  670 |       return STDEXEC::get_completion_signatures<__sndr_t, _Env...>();
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   [ skipping 5 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]
/home/dev/stdexec/include/stdexec/__detail/__starts_on.hpp:144:13:   required from ‘static consteval auto std::execution::__sexpr_impl<std::execution::__starts_on_ns::starts_on_t>::get_completion_signatures() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
  144 |       using __sndr_t =
      |             ^~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__basic_sender.hpp:333:77:   required from ‘static consteval auto std::execution::{anonymous}::__sexpr<_Descriptor>::get_completion_signatures() [with _Self = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}; auto _DescriptorFn = <lambda closure object>std::execution::<lambda()>()]’
  333 |       __sexpr_impl<_Tag>::template get_completion_signatures<_Self, _Env...>();
      |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:146:21:   required from ‘consteval auto std::execution::__cmplsigs::__get_completion_signatures_helper() [with _Sender = std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>; _Env = {}]’
   93 |     STDEXEC_PP_FRONT(__VA_ARGS__))::template get_completion_signatures<__VA_ARGS__>()
/home/dev/stdexec/include/stdexec/__detail/__get_completion_signatures.hpp:225:81:   required from ‘consteval auto [requires std::execution::__well_formed_completions<<placeholder>, >] std::execution::get_completion_signatures() [with _Sender = {anonymous}::__sexpr<<lambda closure object><lambda()>()>; _Env = {}]’
  225 |       return __cmplsigs::__get_completion_signatures_helper<_NewSender, _Env...>();
      |              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~
/home/dev/stdexec/include/stdexec/__detail/__sender_concepts.hpp:62:50:   required from ‘auto [requires std::execution::__well_formed_sender<<placeholder>, >] std::execution::__starts_on_ns::starts_on_t::operator()(_Scheduler&&, _Sender&&) const [with _Scheduler = {anonymous}::impulse_scheduler&; _Sender = exec::__scope::__when_empty_sender<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()> >::__t]’
   62 |     && __constant_completion_signatures<STDEXEC::get_completion_signatures<_Sender, _Env...>()>;
/home/dev/stdexec/test/exec/async_scope/test_empty.cpp:42:40:   required from here
   42 |     ex::sender auto snd = ex::starts_on(sch, scope.on_empty()) | ex::then([&] { is_empty = true; });
      |                           ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:616:25: error: no class template named ‘__f’ in ‘struct std::execution::__let::__transform_signal_fn<std::execution::__rcvrs::set_value_t, typename std::decay<decltype (std::execution::__declval<std::execution::__let::__data<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()>, std::execution::__detail::__always<exec::__scope::__when_empty_sender<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()> >::__t, exec::__scope::__when_empty_sender<std::execution::{anonymous}::__sexpr<<lambda closure object>std::execution::<lambda()>()> > > > >().__fn)>::type>’
  616 |           if constexpr (__ok<__result_t>) {
      |                         ^~~~~~~~~~~~~~~~
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:55: error: inconsistent deduction for auto return type: ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’ and then ‘std::execution::_ERROR_<>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());
/home/dev/stdexec/include/stdexec/__detail/__let.hpp:619:68: error: too many initializers for ‘std::execution::completion_signatures<std::execution::__rcvrs::set_value_t(), std::execution::__rcvrs::set_stopped_t()>’
  619 |             return STDEXEC::__throw_compile_time_error(__result_t());

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions