NVIDIA / NVIDIA/stdexec

Compile failed on gcc-14

Open
#1,779 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
2.4k
Forks
270
Avg merge
3d 6h
Merged PRs (30d)
39

Description

gcc 14.2.0, sepecifically.

I've run git bisect, The issue was introduced in https://github.com/NVIDIA/stdexec/commit/1e21d785e0c7bee8391089e4179f493a487bc089

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());

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure with GCC 14.2.0 using test/exec/async_scope/test_empty.cpp, then inspect the bisected change and the completion-signature code in include/stdexec/__detail/__let.hpp. Done means the test compiles successfully on GCC 14.2.0 without the reported __f and inconsistent return-type errors.

Written by the indexing model from the issue text.

Assessment

Domain
build-system, compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.