Created
October 9, 2024 16:48
-
-
Save cbodley/1b3a85b6281133fc8ea96dfc1b9c2f5b to your computer and use it in GitHub Desktop.
asio::spawn() with move-only return value
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
In file included from main.cc:4: | |
In file included from /home/cbodley/asio/include/boost/asio.hpp:31: | |
In file included from /home/cbodley/asio/include/boost/asio/awaitable.hpp:140: | |
In file included from /home/cbodley/asio/include/boost/asio/impl/awaitable.hpp:29: | |
In file included from /home/cbodley/asio/include/boost/asio/post.hpp:20: | |
In file included from /home/cbodley/asio/include/boost/asio/detail/initiate_post.hpp:21: | |
In file included from /home/cbodley/asio/include/boost/asio/detail/work_dispatcher.hpp:19: | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp:161:7: error: call to deleted constructor of 'std::unique_ptr<int>' | |
161 | arg2_(arg2) | |
| ^ ~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:911:9: note: in instantiation of member function 'boost::asio::detail::binder2<(lambda at main.cc:12:10), std::__exception_ptr::exception_ptr, std::unique_ptr<int>>::binder2' requested here | |
911 | handler(handler_, exception_ptr(), static_cast<T&&>(result)); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:858:11: note: in instantiation of function template specialization 'boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>::call<std::unique_ptr<int>>' requested here | |
858 | this->call(yield, | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:282:9: note: in instantiation of member function 'boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>::operator()' requested here | |
282 | function(&spawned_thread); | |
| ^ | |
/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/invoke.h:61:14: note: in instantiation of member function 'boost::asio::detail::spawned_fiber_thread::entry_point<boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>>::operator()' requested here | |
61 | { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } | |
| ^ | |
/usr/include/boost/context/fiber_fcontext.hpp:97:23: note: in instantiation of member function 'boost::context::detail::fiber_record<boost::context::fiber, boost::context::basic_fixedsize_stack<boost::context::stack_traits>, boost::asio::detail::spawned_fiber_thread::entry_point<boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>>>::run' requested here | |
97 | t.fctx = rec->run( t.fctx); | |
| ^ | |
/usr/include/boost/context/fiber_fcontext.hpp:204:63: note: (skipping 5 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) | |
204 | const fcontext_t fctx = make_fcontext( stack_top, size, & fiber_entry< Record >); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:329:5: note: in instantiation of function template specialization 'boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>::operator()<(lambda at main.cc:12:10), (lambda at main.cc:10:27)>' requested here | |
329 | static_cast<Initiation&&>(initiation)( | |
| ^ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:629:65: note: in instantiation of function template specialization 'boost::asio::detail::completion_handler_async_result<(lambda at main.cc:12:10), void (std::__exception_ptr::exception_ptr, std::unique_ptr<int>)>::initiate<boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>, (lambda at main.cc:12:10), (lambda at main.cc:10:27)>' requested here | |
629 | return async_result<decay_t<CompletionToken>, Signatures...>::initiate( | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1123:10: note: in instantiation of function template specialization 'boost::asio::async_initiate<(lambda at main.cc:12:10), void (std::__exception_ptr::exception_ptr, std::unique_ptr<int>), boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>, (lambda at main.cc:10:27)>' requested here | |
1123 | return async_initiate<CompletionToken, | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1155:11: note: in instantiation of function template specialization 'boost::asio::spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>' requested here | |
1155 | return (spawn)(ctx.get_executor(), static_cast<F&&>(function), | |
| ^ | |
main.cc:10:16: note: in instantiation of function template specialization 'boost::asio::spawn<boost::asio::io_context, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>' requested here | |
10 | boost::asio::spawn(ctx, [] (boost::asio::yield_context yield) { | |
| ^ | |
/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/unique_ptr.h:516:7: note: 'unique_ptr' has been explicitly marked deleted here | |
516 | unique_ptr(const unique_ptr&) = delete; | |
| ^ | |
In file included from main.cc:4: | |
In file included from /home/cbodley/asio/include/boost/asio.hpp:31: | |
In file included from /home/cbodley/asio/include/boost/asio/awaitable.hpp:140: | |
In file included from /home/cbodley/asio/include/boost/asio/impl/awaitable.hpp:29: | |
In file included from /home/cbodley/asio/include/boost/asio/post.hpp:20: | |
In file included from /home/cbodley/asio/include/boost/asio/detail/initiate_post.hpp:21: | |
In file included from /home/cbodley/asio/include/boost/asio/detail/work_dispatcher.hpp:19: | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp:183:9: error: call to deleted constructor of 'std::unique_ptr<int>' | |
183 | static_cast<const Arg2&>(arg2_)); | |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/detail/handler_work.hpp:470:7: note: in instantiation of member function 'boost::asio::detail::binder2<(lambda at main.cc:12:10), std::__exception_ptr::exception_ptr, std::unique_ptr<int>>::operator()' requested here | |
470 | static_cast<Function&&>(function)(); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:912:13: note: in instantiation of function template specialization 'boost::asio::detail::handler_work<(lambda at main.cc:12:10), boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>::complete<boost::asio::detail::binder2<(lambda at main.cc:12:10), std::__exception_ptr::exception_ptr, std::unique_ptr<int>>>' requested here | |
912 | work_.complete(handler, handler.handler_); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:858:11: note: in instantiation of function template specialization 'boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>::call<std::unique_ptr<int>>' requested here | |
858 | this->call(yield, | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:282:9: note: in instantiation of member function 'boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>::operator()' requested here | |
282 | function(&spawned_thread); | |
| ^ | |
/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/invoke.h:61:14: note: in instantiation of member function 'boost::asio::detail::spawned_fiber_thread::entry_point<boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>>::operator()' requested here | |
61 | { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } | |
| ^ | |
/usr/include/boost/context/fiber_fcontext.hpp:97:23: note: (skipping 6 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) | |
97 | t.fctx = rec->run( t.fctx); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:329:5: note: in instantiation of function template specialization 'boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>::operator()<(lambda at main.cc:12:10), (lambda at main.cc:10:27)>' requested here | |
329 | static_cast<Initiation&&>(initiation)( | |
| ^ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:629:65: note: in instantiation of function template specialization 'boost::asio::detail::completion_handler_async_result<(lambda at main.cc:12:10), void (std::__exception_ptr::exception_ptr, std::unique_ptr<int>)>::initiate<boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>, (lambda at main.cc:12:10), (lambda at main.cc:10:27)>' requested here | |
629 | return async_result<decay_t<CompletionToken>, Signatures...>::initiate( | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1123:10: note: in instantiation of function template specialization 'boost::asio::async_initiate<(lambda at main.cc:12:10), void (std::__exception_ptr::exception_ptr, std::unique_ptr<int>), boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>, (lambda at main.cc:10:27)>' requested here | |
1123 | return async_initiate<CompletionToken, | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1155:11: note: in instantiation of function template specialization 'boost::asio::spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>' requested here | |
1155 | return (spawn)(ctx.get_executor(), static_cast<F&&>(function), | |
| ^ | |
main.cc:10:16: note: in instantiation of function template specialization 'boost::asio::spawn<boost::asio::io_context, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>' requested here | |
10 | boost::asio::spawn(ctx, [] (boost::asio::yield_context yield) { | |
| ^ | |
/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/unique_ptr.h:516:7: note: 'unique_ptr' has been explicitly marked deleted here | |
516 | unique_ptr(const unique_ptr&) = delete; | |
| ^ | |
main.cc:12:60: note: passing argument to parameter 'result' here | |
12 | }, [] (std::exception_ptr eptr, std::unique_ptr<int> result) { | |
| ^ | |
In file included from main.cc:4: | |
In file included from /home/cbodley/asio/include/boost/asio.hpp:31: | |
In file included from /home/cbodley/asio/include/boost/asio/awaitable.hpp:140: | |
In file included from /home/cbodley/asio/include/boost/asio/impl/awaitable.hpp:29: | |
In file included from /home/cbodley/asio/include/boost/asio/post.hpp:20: | |
In file included from /home/cbodley/asio/include/boost/asio/detail/initiate_post.hpp:21: | |
In file included from /home/cbodley/asio/include/boost/asio/detail/work_dispatcher.hpp:19: | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp:188:21: error: call to deleted constructor of 'std::unique_ptr<int>' | |
188 | handler_(arg1_, arg2_); | |
| ^~~~~ | |
/home/cbodley/asio/include/boost/asio/detail/handler_work.hpp:204:5: note: in instantiation of member function 'boost::asio::detail::binder2<(lambda at main.cc:12:10), std::__exception_ptr::exception_ptr, std::unique_ptr<int>>::operator()' requested here | |
204 | static_cast<Function&&>(function)(); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/detail/handler_work.hpp:474:19: note: in instantiation of function template specialization 'boost::asio::detail::handler_work_base<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>::dispatch<boost::asio::detail::binder2<(lambda at main.cc:12:10), std::__exception_ptr::exception_ptr, std::unique_ptr<int>>, (lambda at main.cc:12:10)>' requested here | |
474 | base1_type::dispatch(function, handler); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:912:13: note: in instantiation of function template specialization 'boost::asio::detail::handler_work<(lambda at main.cc:12:10), boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>::complete<boost::asio::detail::binder2<(lambda at main.cc:12:10), std::__exception_ptr::exception_ptr, std::unique_ptr<int>>>' requested here | |
912 | work_.complete(handler, handler.handler_); | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:858:11: note: in instantiation of function template specialization 'boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>::call<std::unique_ptr<int>>' requested here | |
858 | this->call(yield, | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:282:9: note: in instantiation of member function 'boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>::operator()' requested here | |
282 | function(&spawned_thread); | |
| ^ | |
/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/invoke.h:61:14: note: (skipping 7 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all) | |
61 | { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } | |
| ^ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:329:5: note: in instantiation of function template specialization 'boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>::operator()<(lambda at main.cc:12:10), (lambda at main.cc:10:27)>' requested here | |
329 | static_cast<Initiation&&>(initiation)( | |
| ^ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:629:65: note: in instantiation of function template specialization 'boost::asio::detail::completion_handler_async_result<(lambda at main.cc:12:10), void (std::__exception_ptr::exception_ptr, std::unique_ptr<int>)>::initiate<boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>, (lambda at main.cc:12:10), (lambda at main.cc:10:27)>' requested here | |
629 | return async_result<decay_t<CompletionToken>, Signatures...>::initiate( | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1123:10: note: in instantiation of function template specialization 'boost::asio::async_initiate<(lambda at main.cc:12:10), void (std::__exception_ptr::exception_ptr, std::unique_ptr<int>), boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>>, (lambda at main.cc:10:27)>' requested here | |
1123 | return async_initiate<CompletionToken, | |
| ^ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1155:11: note: in instantiation of function template specialization 'boost::asio::spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>' requested here | |
1155 | return (spawn)(ctx.get_executor(), static_cast<F&&>(function), | |
| ^ | |
main.cc:10:16: note: in instantiation of function template specialization 'boost::asio::spawn<boost::asio::io_context, (lambda at main.cc:10:27), (lambda at main.cc:12:10)>' requested here | |
10 | boost::asio::spawn(ctx, [] (boost::asio::yield_context yield) { | |
| ^ | |
/usr/bin/../lib/gcc/x86_64-redhat-linux/14/../../../../include/c++/14/bits/unique_ptr.h:516:7: note: 'unique_ptr' has been explicitly marked deleted here | |
516 | unique_ptr(const unique_ptr&) = delete; | |
| ^ | |
main.cc:12:60: note: passing argument to parameter 'result' here | |
12 | }, [] (std::exception_ptr eptr, std::unique_ptr<int> result) { | |
| ^ | |
3 errors generated. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
In file included from /home/cbodley/asio/include/boost/asio/detail/work_dispatcher.hpp:19, | |
from /home/cbodley/asio/include/boost/asio/detail/initiate_post.hpp:21, | |
from /home/cbodley/asio/include/boost/asio/post.hpp:20, | |
from /home/cbodley/asio/include/boost/asio/impl/awaitable.hpp:29, | |
from /home/cbodley/asio/include/boost/asio/awaitable.hpp:140, | |
from /home/cbodley/asio/include/boost/asio.hpp:31, | |
from main.cc:4: | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp: In instantiation of ‘boost::asio::detail::binder2<Handler, Arg1, Arg2>::binder2(Handler&, const Arg1&, const Arg2&) [with Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Arg1 = std::__exception_ptr::exception_ptr; Arg2 = std::unique_ptr<int, std::default_delete<int> >]’: | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:911:9: required from ‘void boost::asio::detail::spawn_entry_point<Executor, Function, Handler>::call(const boost::asio::basic_yield_context<Executor>&, boost::asio::void_type<T>) [with T = std::unique_ptr<int, std::default_delete<int> >; Executor = boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>; Function = main()::<lambda(boost::asio::yield_context)>; Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>]’ | |
911 | handler(handler_, exception_ptr(), static_cast<T&&>(result)); | |
| ^~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:858:15: required from ‘void boost::asio::detail::spawn_entry_point<Executor, Function, Handler>::operator()(boost::asio::detail::spawned_thread_base*) [with Executor = boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>; Function = main()::<lambda(boost::asio::yield_context)>; Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>]’ | |
858 | this->call(yield, | |
| ~~~~~~~~~~^~~~~~~ | |
859 | void_type<result_of_t<Function(basic_yield_context<Executor>)>>()); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:282:17: required from ‘boost::asio::detail::spawned_fiber_thread::fiber_type boost::asio::detail::spawned_fiber_thread::entry_point<Function>::operator()(boost::asio::detail::spawned_fiber_thread::fiber_type&&) [with Function = boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, main()::<lambda(boost::asio::yield_context)>, main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)> >; boost::asio::detail::spawned_fiber_thread::fiber_type = boost::context::fiber]’ | |
282 | function(&spawned_thread); | |
| ~~~~~~~~^~~~~~~~~~~~~~~~~ | |
/usr/include/c++/14/bits/invoke.h:61:36: required from ‘constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = boost::context::fiber; _Fn = boost::asio::detail::spawned_fiber_thread::entry_point<boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<allocator<void>, 0>, main()::<lambda(boost::asio::yield_context)>, main()::<lambda(__exception_ptr::exception_ptr, unique_ptr<int, default_delete<int> >)> > >&; _Args = {boost::context::fiber}]’ | |
61 | { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } | |
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/usr/include/c++/14/bits/invoke.h:96:40: required from ‘constexpr typename std::__invoke_result<_Functor, _ArgTypes>::type std::__invoke(_Callable&&, _Args&& ...) [with _Callable = boost::asio::detail::spawned_fiber_thread::entry_point<boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<allocator<void>, 0>, main()::<lambda(boost::asio::yield_context)>, main()::<lambda(__exception_ptr::exception_ptr, unique_ptr<int, default_delete<int> >)> > >&; _Args = {boost::context::fiber}; typename __invoke_result<_Functor, _ArgTypes>::type = boost::context::fiber]’ | |
96 | return std::__invoke_impl<__type>(__tag{}, std::forward<_Callable>(__fn), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
97 | std::forward<_Args>(__args)...); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/usr/include/c++/14/functional:120:27: [ skipping 7 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1050:45: required from ‘void boost::asio::detail::initiate_spawn<Executor>::operator()(Handler&&, F&&) const [with Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; F = main()::<lambda(boost::asio::yield_context)>; Executor = boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>]’ | |
1050 | default_spawned_thread_type::spawn( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
1051 | spawn_entry_point<Executor, function_type, handler_type>( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1052 | executor_, static_cast<F&&>(f), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1053 | static_cast<Handler&&>(handler)), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1054 | proxy_slot, cancel_state))); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:329:42: required from ‘static boost::asio::detail::completion_handler_async_result<CompletionToken, Signatures>::return_type boost::asio::detail::completion_handler_async_result<CompletionToken, Signatures>::initiate(Initiation&&, RawCompletionToken&&, Args&& ...) [with Initiation = boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0> >; RawCompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Args = {main()::<lambda(boost::asio::yield_context)>}; CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Signatures = {void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)}; return_type = void]’ | |
329 | static_cast<Initiation&&>(initiation)( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
330 | static_cast<RawCompletionToken&&>(token), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
331 | static_cast<Args&&>(args)...); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:629:73: required from ‘decltype (boost::asio::enable_if_t<((bool)typename std::enable_if<boost::asio::detail::are_completion_signatures<TN ...>::value, boost::asio::detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type::value), boost::asio::async_result<typename std::decay<_Tp>::type, Signatures ...> >::initiate(static_cast<Initiation&&>(initiation), static_cast<CompletionToken&&>(token), static_cast<Args&&>(boost::asio::async_initiate::args) ...)) boost::asio::async_initiate(Initiation&&, type_identity_t<CompletionToken>&, Args&& ...) [with CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Signatures = {void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)}; Initiation = detail::initiate_spawn<io_context::basic_executor_type<std::allocator<void>, 0> >; Args = {main()::<lambda(yield_context)>}; decltype (enable_if_t<((bool)typename std::enable_if<detail::are_completion_signatures<TN ...>::value, detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type::value), async_result<typename std::decay<_Tp>::type, Signatures ...> >::initiate(static_cast<Initiation&&>(initiation), static_cast<CompletionToken&&>(token), static_cast<Args&&>(boost::asio::async_initiate::args) ...)) = void; enable_if_t<((bool)typename std::enable_if<detail::are_completion_signatures<TN ...>::value, detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type::value), async_result<typename std::decay<_Tp>::type, Signatures ...> > = async_result<main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>, void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; typename std::enable_if<detail::are_completion_signatures<TN ...>::value, detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type = detail::async_result_has_initiate_memfn<main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>, void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; typename std::decay<_Tp>::type = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; type_identity_t<CompletionToken> = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>]’ | |
629 | return async_result<decay_t<CompletionToken>, Signatures...>::initiate( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
630 | static_cast<Initiation&&>(initiation), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
631 | static_cast<CompletionToken&&>(token), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
632 | static_cast<Args&&>(args)...); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1125:60: required from ‘decltype (async_initiate<CompletionToken, typename boost::asio::detail::spawn_signature<typename boost::asio::result_of<F(boost::asio::basic_yield_context<Executor>)>::type>::type>(declval<boost::asio::detail::initiate_spawn<Executor> >(), token, static_cast<F&&>(function))) boost::asio::spawn(const Executor&, F&&, CompletionToken&&, constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))>, constraint_t<((bool)(is_executor<Executor>::value || execution::is_executor<T>::value))>) [with Executor = io_context::basic_executor_type<std::allocator<void>, 0>; F = main()::<lambda(yield_context)>; CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; decltype (async_initiate<CompletionToken, typename detail::spawn_signature<typename result_of<F(basic_yield_context<Executor>)>::type>::type>(declval<detail::initiate_spawn<Executor> >(), token, static_cast<F&&>(function))) = void; typename detail::spawn_signature<typename result_of<F(basic_yield_context<Executor>)>::type>::type = void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >); typename result_of<F(basic_yield_context<Executor>)>::type = std::unique_ptr<int, std::default_delete<int> >; constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))> = int; typename std::decay<Property>::type = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; constraint_t<((bool)(is_executor<Executor>::value || execution::is_executor<T>::value))> = int]’ | |
1123 | return async_initiate<CompletionToken, | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1124 | typename detail::spawn_signature< | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1125 | result_of_t<F(basic_yield_context<Executor>)>>::type>( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
1126 | detail::initiate_spawn<Executor>(ex), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1127 | token, static_cast<F&&>(function)); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1155:17: required from ‘decltype (async_initiate<CompletionToken, typename boost::asio::detail::spawn_signature<typename boost::asio::result_of<F(boost::asio::basic_yield_context<typename ExecutionContext::executor_type>)>::type>::type>(declval<boost::asio::detail::initiate_spawn<typename ExecutionContext::executor_type> >(), token, static_cast<F&&>(function))) boost::asio::spawn(ExecutionContext&, F&&, CompletionToken&&, constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))>, constraint_t<((bool)std::is_convertible<ExecutionContext&, execution_context&>::value)>) [with ExecutionContext = io_context; F = main()::<lambda(yield_context)>; CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; decltype (async_initiate<CompletionToken, typename detail::spawn_signature<typename result_of<F(basic_yield_context<typename ExecutionContext::executor_type>)>::type>::type>(declval<detail::initiate_spawn<typename ExecutionContext::executor_type> >(), token, static_cast<F&&>(function))) = void; typename detail::spawn_signature<typename result_of<F(basic_yield_context<typename ExecutionContext::executor_type>)>::type>::type = void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >); typename result_of<F(basic_yield_context<typename ExecutionContext::executor_type>)>::type = std::unique_ptr<int, std::default_delete<int> >; typename ExecutionContext::executor_type = io_context::basic_executor_type<std::allocator<void>, 0>; constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))> = int; typename std::decay<Property>::type = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; constraint_t<((bool)std::is_convertible<ExecutionContext&, execution_context&>::value)> = int]’ | |
1155 | return (spawn)(ctx.get_executor(), static_cast<F&&>(function), | |
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1156 | static_cast<CompletionToken&&>(token)); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
main.cc:10:21: required from here | |
10 | boost::asio::spawn(ctx, [] (boost::asio::yield_context yield) { | |
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
11 | return std::make_unique<int>(42); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
12 | }, [] (std::exception_ptr eptr, std::unique_ptr<int> result) { | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
13 | if (eptr) { | |
| ~~~~~~~~~~~ | |
14 | std::rethrow_exception(eptr); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
15 | } else { | |
| ~~~~~~~~ | |
16 | std::cout << *result << '\n'; | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
17 | } | |
| ~ | |
18 | }); | |
| ~~ | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp:161:7: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]’ | |
161 | arg2_(arg2) | |
| ^~~~~~~~~~~ | |
In file included from /usr/include/c++/14/memory:78, | |
from main.cc:3: | |
/usr/include/c++/14/bits/unique_ptr.h:516:7: note: declared here | |
516 | unique_ptr(const unique_ptr&) = delete; | |
| ^~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp:161:7: note: use ‘-fdiagnostics-all-candidates’ to display considered candidates | |
161 | arg2_(arg2) | |
| ^~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp: In instantiation of ‘void boost::asio::detail::binder2<Handler, Arg1, Arg2>::operator()() [with Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Arg1 = std::__exception_ptr::exception_ptr; Arg2 = std::unique_ptr<int, std::default_delete<int> >]’: | |
/home/cbodley/asio/include/boost/asio/detail/handler_work.hpp:470:40: required from ‘void boost::asio::detail::handler_work<Handler, IoExecutor, typename std::enable_if<std::is_same<typename boost::asio::associated_executor<T, Executor>::asio_associated_executor_is_unspecialised, void>::value, void>::type>::complete(Function&, Handler&) [with Function = boost::asio::detail::binder2<main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>, std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> > >; Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; IoExecutor = boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>; typename std::enable_if<std::is_same<typename boost::asio::associated_executor<T, Executor>::asio_associated_executor_is_unspecialised, void>::value, void>::type = void; typename boost::asio::associated_executor<T, Executor>::asio_associated_executor_is_unspecialised = void]’ | |
470 | static_cast<Function&&>(function)(); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:912:21: required from ‘void boost::asio::detail::spawn_entry_point<Executor, Function, Handler>::call(const boost::asio::basic_yield_context<Executor>&, boost::asio::void_type<T>) [with T = std::unique_ptr<int, std::default_delete<int> >; Executor = boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>; Function = main()::<lambda(boost::asio::yield_context)>; Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>]’ | |
912 | work_.complete(handler, handler.handler_); | |
| ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:858:15: required from ‘void boost::asio::detail::spawn_entry_point<Executor, Function, Handler>::operator()(boost::asio::detail::spawned_thread_base*) [with Executor = boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>; Function = main()::<lambda(boost::asio::yield_context)>; Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>]’ | |
858 | this->call(yield, | |
| ~~~~~~~~~~^~~~~~~ | |
859 | void_type<result_of_t<Function(basic_yield_context<Executor>)>>()); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:282:17: required from ‘boost::asio::detail::spawned_fiber_thread::fiber_type boost::asio::detail::spawned_fiber_thread::entry_point<Function>::operator()(boost::asio::detail::spawned_fiber_thread::fiber_type&&) [with Function = boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>, main()::<lambda(boost::asio::yield_context)>, main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)> >; boost::asio::detail::spawned_fiber_thread::fiber_type = boost::context::fiber]’ | |
282 | function(&spawned_thread); | |
| ~~~~~~~~^~~~~~~~~~~~~~~~~ | |
/usr/include/c++/14/bits/invoke.h:61:36: required from ‘constexpr _Res std::__invoke_impl(__invoke_other, _Fn&&, _Args&& ...) [with _Res = boost::context::fiber; _Fn = boost::asio::detail::spawned_fiber_thread::entry_point<boost::asio::detail::spawn_entry_point<boost::asio::io_context::basic_executor_type<allocator<void>, 0>, main()::<lambda(boost::asio::yield_context)>, main()::<lambda(__exception_ptr::exception_ptr, unique_ptr<int, default_delete<int> >)> > >&; _Args = {boost::context::fiber}]’ | |
61 | { return std::forward<_Fn>(__f)(std::forward<_Args>(__args)...); } | |
| ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/usr/include/c++/14/bits/invoke.h:96:40: [ skipping 8 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ] | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1050:45: required from ‘void boost::asio::detail::initiate_spawn<Executor>::operator()(Handler&&, F&&) const [with Handler = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; F = main()::<lambda(boost::asio::yield_context)>; Executor = boost::asio::io_context::basic_executor_type<std::allocator<void>, 0>]’ | |
1050 | default_spawned_thread_type::spawn( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
1051 | spawn_entry_point<Executor, function_type, handler_type>( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1052 | executor_, static_cast<F&&>(f), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1053 | static_cast<Handler&&>(handler)), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1054 | proxy_slot, cancel_state))); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:329:42: required from ‘static boost::asio::detail::completion_handler_async_result<CompletionToken, Signatures>::return_type boost::asio::detail::completion_handler_async_result<CompletionToken, Signatures>::initiate(Initiation&&, RawCompletionToken&&, Args&& ...) [with Initiation = boost::asio::detail::initiate_spawn<boost::asio::io_context::basic_executor_type<std::allocator<void>, 0> >; RawCompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Args = {main()::<lambda(boost::asio::yield_context)>}; CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Signatures = {void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)}; return_type = void]’ | |
329 | static_cast<Initiation&&>(initiation)( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
330 | static_cast<RawCompletionToken&&>(token), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
331 | static_cast<Args&&>(args)...); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/async_result.hpp:629:73: required from ‘decltype (boost::asio::enable_if_t<((bool)typename std::enable_if<boost::asio::detail::are_completion_signatures<TN ...>::value, boost::asio::detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type::value), boost::asio::async_result<typename std::decay<_Tp>::type, Signatures ...> >::initiate(static_cast<Initiation&&>(initiation), static_cast<CompletionToken&&>(token), static_cast<Args&&>(boost::asio::async_initiate::args) ...)) boost::asio::async_initiate(Initiation&&, type_identity_t<CompletionToken>&, Args&& ...) [with CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; Signatures = {void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)}; Initiation = detail::initiate_spawn<io_context::basic_executor_type<std::allocator<void>, 0> >; Args = {main()::<lambda(yield_context)>}; decltype (enable_if_t<((bool)typename std::enable_if<detail::are_completion_signatures<TN ...>::value, detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type::value), async_result<typename std::decay<_Tp>::type, Signatures ...> >::initiate(static_cast<Initiation&&>(initiation), static_cast<CompletionToken&&>(token), static_cast<Args&&>(boost::asio::async_initiate::args) ...)) = void; enable_if_t<((bool)typename std::enable_if<detail::are_completion_signatures<TN ...>::value, detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type::value), async_result<typename std::decay<_Tp>::type, Signatures ...> > = async_result<main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>, void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; typename std::enable_if<detail::are_completion_signatures<TN ...>::value, detail::async_result_has_initiate_memfn<CompletionToken, Signatures ...> >::type = detail::async_result_has_initiate_memfn<main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>, void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; typename std::decay<_Tp>::type = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; type_identity_t<CompletionToken> = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>]’ | |
629 | return async_result<decay_t<CompletionToken>, Signatures...>::initiate( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
630 | static_cast<Initiation&&>(initiation), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
631 | static_cast<CompletionToken&&>(token), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
632 | static_cast<Args&&>(args)...); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1125:60: required from ‘decltype (async_initiate<CompletionToken, typename boost::asio::detail::spawn_signature<typename boost::asio::result_of<F(boost::asio::basic_yield_context<Executor>)>::type>::type>(declval<boost::asio::detail::initiate_spawn<Executor> >(), token, static_cast<F&&>(function))) boost::asio::spawn(const Executor&, F&&, CompletionToken&&, constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))>, constraint_t<((bool)(is_executor<Executor>::value || execution::is_executor<T>::value))>) [with Executor = io_context::basic_executor_type<std::allocator<void>, 0>; F = main()::<lambda(yield_context)>; CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; decltype (async_initiate<CompletionToken, typename detail::spawn_signature<typename result_of<F(basic_yield_context<Executor>)>::type>::type>(declval<detail::initiate_spawn<Executor> >(), token, static_cast<F&&>(function))) = void; typename detail::spawn_signature<typename result_of<F(basic_yield_context<Executor>)>::type>::type = void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >); typename result_of<F(basic_yield_context<Executor>)>::type = std::unique_ptr<int, std::default_delete<int> >; constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))> = int; typename std::decay<Property>::type = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; constraint_t<((bool)(is_executor<Executor>::value || execution::is_executor<T>::value))> = int]’ | |
1123 | return async_initiate<CompletionToken, | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1124 | typename detail::spawn_signature< | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1125 | result_of_t<F(basic_yield_context<Executor>)>>::type>( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
1126 | detail::initiate_spawn<Executor>(ex), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1127 | token, static_cast<F&&>(function)); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/impl/spawn.hpp:1155:17: required from ‘decltype (async_initiate<CompletionToken, typename boost::asio::detail::spawn_signature<typename boost::asio::result_of<F(boost::asio::basic_yield_context<typename ExecutionContext::executor_type>)>::type>::type>(declval<boost::asio::detail::initiate_spawn<typename ExecutionContext::executor_type> >(), token, static_cast<F&&>(function))) boost::asio::spawn(ExecutionContext&, F&&, CompletionToken&&, constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))>, constraint_t<((bool)std::is_convertible<ExecutionContext&, execution_context&>::value)>) [with ExecutionContext = io_context; F = main()::<lambda(yield_context)>; CompletionToken = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; decltype (async_initiate<CompletionToken, typename detail::spawn_signature<typename result_of<F(basic_yield_context<typename ExecutionContext::executor_type>)>::type>::type>(declval<detail::initiate_spawn<typename ExecutionContext::executor_type> >(), token, static_cast<F&&>(function))) = void; typename detail::spawn_signature<typename result_of<F(basic_yield_context<typename ExecutionContext::executor_type>)>::type>::type = void(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >); typename result_of<F(basic_yield_context<typename ExecutionContext::executor_type>)>::type = std::unique_ptr<int, std::default_delete<int> >; typename ExecutionContext::executor_type = io_context::basic_executor_type<std::allocator<void>, 0>; constraint_t<((bool)(! std::is_same<typename std::decay<Property>::type, boost::coroutines::attributes>::value))> = int; typename std::decay<Property>::type = main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>; constraint_t<((bool)std::is_convertible<ExecutionContext&, execution_context&>::value)> = int]’ | |
1155 | return (spawn)(ctx.get_executor(), static_cast<F&&>(function), | |
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
1156 | static_cast<CompletionToken&&>(token)); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
main.cc:10:21: required from here | |
10 | boost::asio::spawn(ctx, [] (boost::asio::yield_context yield) { | |
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
11 | return std::make_unique<int>(42); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
12 | }, [] (std::exception_ptr eptr, std::unique_ptr<int> result) { | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
13 | if (eptr) { | |
| ~~~~~~~~~~~ | |
14 | std::rethrow_exception(eptr); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
15 | } else { | |
| ~~~~~~~~ | |
16 | std::cout << *result << '\n'; | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
17 | } | |
| ~ | |
18 | }); | |
| ~~ | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp:181:37: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]’ | |
181 | static_cast<Handler&&>(handler_)( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
182 | static_cast<const Arg1&>(arg1_), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
183 | static_cast<const Arg2&>(arg2_)); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
/usr/include/c++/14/bits/unique_ptr.h:516:7: note: declared here | |
516 | unique_ptr(const unique_ptr&) = delete; | |
| ^~~~~~~~~~ | |
/home/cbodley/asio/include/boost/asio/detail/bind_handler.hpp:181:37: note: use ‘-fdiagnostics-all-candidates’ to display considered candidates | |
181 | static_cast<Handler&&>(handler_)( | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ | |
182 | static_cast<const Arg1&>(arg1_), | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
183 | static_cast<const Arg2&>(arg2_)); | |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
main.cc:12:10: note: initializing argument 2 of ‘main()::<lambda(std::__exception_ptr::exception_ptr, std::unique_ptr<int, std::default_delete<int> >)>’ | |
12 | }, [] (std::exception_ptr eptr, std::unique_ptr<int> result) { | |
| ^ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment