Compile failed on gcc-14

Abierto
#1,779 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
38/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado

Línea de trabajo

Reproduce el fallo con GCC 14.2.0 usando test/exec/async_scope/test_empty.cpp; después, inspecciona el cambio identificado mediante bisección y el código de completion-signature en include/stdexec/__detail/__let.hpp. Se considera terminado cuando el test compila correctamente con GCC 14.2.0 sin los errores reportados sobre __f y tipos de retorno inconsistentes.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

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());
Lenguaje dominante
C++
Estrellas
2.4k
Forks
270
Merge medio
2 d 17 h
PR fusionados (30 d)
37

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de NVIDIA/stdexec

Todos los issues de NVIDIA/stdexec

Issues similares

Más issues de C++

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.