Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

cti::transforms::wait_for doesn't compile with cmake options -DCTI_CONTINUABLE_WITH_COROUTINE=ON -DCTI_CONTINUABLE_WITH_CPP_LATEST=ON #66

Open
KasperDeSmedt opened this issue Mar 9, 2023 · 0 comments

Comments

@KasperDeSmedt
Copy link

@Naios

.apply(cti::transforms::wait_for(time)) doesn't seem to compile if cmake options CTI_CONTINUABLE_WITH_COROUTINE and CTI_CONTINUABLE_WITH_CPP_LATEST are enabled.
I can reproduce this by building this project's tests with the options enabled.


Commit Hash

f7f304e

Steps to Reproduce

Execute the following commands in the continuable project dirctory.

  1. cmake -DCTI_CONTINUABLE_WITH_COROUTINE=ON -DCTI_CONTINUABLE_WITH_CPP_LATEST=ON .
  2. make

Prints the following error:

In file included from /home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:38,
                 from /home/kasper/Documents/continuable/include/continuable/continuable-transforms.hpp:34,
                 from /home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:27:
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp: In instantiation of ‘Result cti::detail::transforms::wait_unsafe(cti::continuable_base<Data, Annotation>&&, Waiter&&) [with Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, asio::async_result<cti::use_continuable_t<>, void(std::error_code)>::initiate<asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::initiate_async_wait>(asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::initiate_async_wait, cti::use_continuable_t<>)::<lambda(auto:75&&)> >; Annotation = cti::detail::identity<>; Waiter = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>::<lambda(cti::detail::transforms::condition_variable_t&, cti::detail::transforms::lock_t&, auto:47&&)>; Result = cti::result<>]’:
/home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:99:43:   required from ‘cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)> [with auto:46 = cti::continuable_base<cti::detail::base::proxy_continuable<cti::detail::identity<>, asio::async_result<cti::use_continuable_t<>, void(std::error_code)>::initiate<asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::initiate_async_wait>(asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::initiate_async_wait, cti::use_continuable_t<>)::<lambda(auto:75&&)> >, cti::detail::identity<> >]’
/home/kasper/Documents/continuable/include/continuable/continuable-base.hpp:480:38:   required from ‘auto cti::continuable_base<Data, Annotation>::apply(T&&) && [with T = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>; Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, asio::async_result<cti::use_continuable_t<>, void(std::error_code)>::initiate<asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::initiate_async_wait>(asio::basic_waitable_timer<std::chrono::_V2::steady_clock>::initiate_async_wait, cti::use_continuable_t<>)::<lambda(auto:75&&)> >; Annotation = cti::detail::identity<>]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:183:46:   required from here
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:241:12: error: no matching function for call to ‘cti::detail::transforms::unlocker<cti::result<> >::unlocker(<brace-enclosed initializer list>)’
  240 |   std::move(continuable)
      |   ~~~~~~~~~~~~~~~~~~~~~~
  241 |       .next(unlocker<Result>{std::weak_ptr<frame_t>(frame)})
      |       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:3: note: candidate: ‘cti::detail::transforms::unlocker<Result>::unlocker(cti::detail::transforms::unlocker<Result>&&) [with Result = cti::result<>]’
  191 |   unlocker(unlocker&&) = default;
      |   ^~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:12: note:   no known conversion for argument 1 from ‘std::weak_ptr<cti::detail::transforms::wait_frame<cti::result<> > >’ to ‘cti::detail::transforms::unlocker<cti::result<> >&&’
  191 |   unlocker(unlocker&&) = default;
      |            ^~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp: In instantiation of ‘Result cti::detail::transforms::wait_unsafe(cti::continuable_base<Data, Annotation>&&, Waiter&&) [with Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, supplier_of<>()::<lambda(auto:94&&)> >; Annotation = cti::detail::identity<>; Waiter = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>::<lambda(cti::detail::transforms::condition_variable_t&, cti::detail::transforms::lock_t&, auto:47&&)>; Result = cti::result<>]’:
/home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:99:43:   required from ‘cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)> [with auto:46 = cti::continuable_base<cti::detail::base::proxy_continuable<cti::detail::identity<>, supplier_of<>()::<lambda(auto:94&&)> >, cti::detail::identity<> >]’
/home/kasper/Documents/continuable/include/continuable/continuable-base.hpp:480:38:   required from ‘auto cti::continuable_base<Data, Annotation>::apply(T&&) && [with T = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>; Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, supplier_of<>()::<lambda(auto:94&&)> >; Annotation = cti::detail::identity<>]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:165:23:   required from ‘void single_dimension_tests_wait_for_test_sync_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = provide_copyable]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:164:1:   required from here
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:241:12: error: no matching function for call to ‘cti::detail::transforms::unlocker<cti::result<> >::unlocker(<brace-enclosed initializer list>)’
  240 |   std::move(continuable)
      |   ~~~~~~~~~~~~~~~~~~~~~~
  241 |       .next(unlocker<Result>{std::weak_ptr<frame_t>(frame)})
      |       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:3: note: candidate: ‘cti::detail::transforms::unlocker<Result>::unlocker(cti::detail::transforms::unlocker<Result>&&) [with Result = cti::result<>]’
  191 |   unlocker(unlocker&&) = default;
      |   ^~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:12: note:   no known conversion for argument 1 from ‘std::weak_ptr<cti::detail::transforms::wait_frame<cti::result<> > >’ to ‘cti::detail::transforms::unlocker<cti::result<> >&&’
  191 |   unlocker(unlocker&&) = default;
      |            ^~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp: In instantiation of ‘Result cti::detail::transforms::wait_unsafe(cti::continuable_base<Data, Annotation>&&, Waiter&&) [with Data = cti::detail::base::proxy_continuable<cti::detail::identity<int>, supplier_of<int>(int&&)::<lambda(auto:94&&)> >; Annotation = cti::detail::identity<int>; Waiter = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>::<lambda(cti::detail::transforms::condition_variable_t&, cti::detail::transforms::lock_t&, auto:47&&)>; Result = cti::result<int>]’:
/home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:99:43:   required from ‘cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)> [with auto:46 = cti::continuable_base<cti::detail::base::proxy_continuable<cti::detail::identity<int>, supplier_of<int>(int&&)::<lambda(auto:94&&)> >, cti::detail::identity<int> >]’
/home/kasper/Documents/continuable/include/continuable/continuable-base.hpp:480:38:   required from ‘auto cti::continuable_base<Data, Annotation>::apply(T&&) && [with T = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>; Data = cti::detail::base::proxy_continuable<cti::detail::identity<int>, supplier_of<int>(int&&)::<lambda(auto:94&&)> >; Annotation = cti::detail::identity<int>]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:167:3:   required from ‘void single_dimension_tests_wait_for_test_sync_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = provide_copyable]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:164:1:   required from here
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:241:12: error: no matching function for call to ‘cti::detail::transforms::unlocker<cti::result<int> >::unlocker(<brace-enclosed initializer list>)’
  240 |   std::move(continuable)
      |   ~~~~~~~~~~~~~~~~~~~~~~
  241 |       .next(unlocker<Result>{std::weak_ptr<frame_t>(frame)})
      |       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:3: note: candidate: ‘cti::detail::transforms::unlocker<Result>::unlocker(cti::detail::transforms::unlocker<Result>&&) [with Result = cti::result<int>]’
  191 |   unlocker(unlocker&&) = default;
      |   ^~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:12: note:   no known conversion for argument 1 from ‘std::weak_ptr<cti::detail::transforms::wait_frame<cti::result<int> > >’ to ‘cti::detail::transforms::unlocker<cti::result<int> >&&’
  191 |   unlocker(unlocker&&) = default;
      |            ^~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp: In instantiation of ‘Result cti::detail::transforms::wait_unsafe(cti::continuable_base<Data, Annotation>&&, Waiter&&) [with Data = cti::detail::base::proxy_continuable<cti::detail::identity<int, int>, supplier_of<int, int>(int&&, int&&)::<lambda(auto:94&&)> >; Annotation = cti::detail::identity<int, int>; Waiter = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>::<lambda(cti::detail::transforms::condition_variable_t&, cti::detail::transforms::lock_t&, auto:47&&)>; Result = cti::result<int, int>]’:
/home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:99:43:   required from ‘cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)> [with auto:46 = cti::continuable_base<cti::detail::base::proxy_continuable<cti::detail::identity<int, int>, supplier_of<int, int>(int&&, int&&)::<lambda(auto:94&&)> >, cti::detail::identity<int, int> >]’
/home/kasper/Documents/continuable/include/continuable/continuable-base.hpp:480:38:   required from ‘auto cti::continuable_base<Data, Annotation>::apply(T&&) && [with T = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>; Data = cti::detail::base::proxy_continuable<cti::detail::identity<int, int>, supplier_of<int, int>(int&&, int&&)::<lambda(auto:94&&)> >; Annotation = cti::detail::identity<int, int>]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:171:3:   required from ‘void single_dimension_tests_wait_for_test_sync_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = provide_copyable]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:164:1:   required from here
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:241:12: error: no matching function for call to ‘cti::detail::transforms::unlocker<cti::result<int, int> >::unlocker(<brace-enclosed initializer list>)’
  240 |   std::move(continuable)
      |   ~~~~~~~~~~~~~~~~~~~~~~
  241 |       .next(unlocker<Result>{std::weak_ptr<frame_t>(frame)})
      |       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:3: note: candidate: ‘cti::detail::transforms::unlocker<Result>::unlocker(cti::detail::transforms::unlocker<Result>&&) [with Result = cti::result<int, int>]’
  191 |   unlocker(unlocker&&) = default;
      |   ^~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:12: note:   no known conversion for argument 1 from ‘std::weak_ptr<cti::detail::transforms::wait_frame<cti::result<int, int> > >’ to ‘cti::detail::transforms::unlocker<cti::result<int, int> >&&’
  191 |   unlocker(unlocker&&) = default;
      |            ^~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp: In instantiation of ‘Result cti::detail::transforms::wait_unsafe(cti::continuable_base<Data, Annotation>&&, Waiter&&) [with Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, single_dimension_tests_wait_for_test_sync_Test<provide_copyable>::TestBody()::<lambda(auto:100&&)> >; Annotation = cti::detail::identity<>; Waiter = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>::<lambda(cti::detail::transforms::condition_variable_t&, cti::detail::transforms::lock_t&, auto:47&&)>; Result = cti::result<>]’:
/home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:99:43:   required from ‘cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)> [with auto:46 = cti::continuable_base<cti::detail::base::proxy_continuable<cti::detail::identity<>, single_dimension_tests_wait_for_test_sync_Test<provide_copyable>::TestBody()::<lambda(auto:100&&)> >, cti::detail::identity<> >]’
/home/kasper/Documents/continuable/include/continuable/continuable-base.hpp:480:38:   required from ‘auto cti::continuable_base<Data, Annotation>::apply(T&&) && [with T = cti::transforms::wait_for<long int, std::ratio<1, 1000> >(std::chrono::duration<long int, std::ratio<1, 1000> >)::<lambda(auto:46&&)>; Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, single_dimension_tests_wait_for_test_sync_Test<provide_copyable>::TestBody()::<lambda(auto:100&&)> >; Annotation = cti::detail::identity<>]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:176:3:   required from ‘void single_dimension_tests_wait_for_test_sync_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = provide_copyable]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:164:1:   required from here
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:241:12: error: no matching function for call to ‘cti::detail::transforms::unlocker<cti::result<> >::unlocker(<brace-enclosed initializer list>)’
  240 |   std::move(continuable)
      |   ~~~~~~~~~~~~~~~~~~~~~~
  241 |       .next(unlocker<Result>{std::weak_ptr<frame_t>(frame)})
      |       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:3: note: candidate: ‘cti::detail::transforms::unlocker<Result>::unlocker(cti::detail::transforms::unlocker<Result>&&) [with Result = cti::result<>]’
  191 |   unlocker(unlocker&&) = default;
      |   ^~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:12: note:   no known conversion for argument 1 from ‘std::weak_ptr<cti::detail::transforms::wait_frame<cti::result<> > >’ to ‘cti::detail::transforms::unlocker<cti::result<> >&&’
  191 |   unlocker(unlocker&&) = default;
      |            ^~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp: In instantiation of ‘Result cti::detail::transforms::wait_unsafe(cti::continuable_base<Data, Annotation>&&, Waiter&&) [with Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, cti::detail::operations::async<single_dimension_tests_wait_for_test_unlocked_empty_result_Test<provide_copyable>::TestBody()::<lambda()>, cti::detail::types::this_thread_executor_tag>(single_dimension_tests_wait_for_test_unlocked_empty_result_Test<provide_copyable>::TestBody()::<lambda()>&&, cti::detail::types::this_thread_executor_tag&&)::<lambda(auto:62&&)> >; Annotation = cti::detail::identity<>; Waiter = cti::transforms::wait_for<long int, std::ratio<3600> >(std::chrono::duration<long int, std::ratio<3600> >)::<lambda(auto:46&&)>::<lambda(cti::detail::transforms::condition_variable_t&, cti::detail::transforms::lock_t&, auto:47&&)>; Result = cti::result<>]’:
/home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:99:43:   required from ‘cti::transforms::wait_for<long int, std::ratio<3600> >(std::chrono::duration<long int, std::ratio<3600> >)::<lambda(auto:46&&)> [with auto:46 = cti::continuable_base<cti::detail::base::proxy_continuable<cti::detail::identity<>, cti::detail::operations::async<single_dimension_tests_wait_for_test_unlocked_empty_result_Test<provide_copyable>::TestBody()::<lambda()>, cti::detail::types::this_thread_executor_tag>(single_dimension_tests_wait_for_test_unlocked_empty_result_Test<provide_copyable>::TestBody()::<lambda()>&&, cti::detail::types::this_thread_executor_tag&&)::<lambda(auto:62&&)> >, cti::detail::identity<> >]’
/home/kasper/Documents/continuable/include/continuable/continuable-base.hpp:480:38:   required from ‘auto cti::continuable_base<Data, Annotation>::apply(T&&) && [with T = cti::transforms::wait_for<long int, std::ratio<3600> >(std::chrono::duration<long int, std::ratio<3600> >)::<lambda(auto:46&&)>; Data = cti::detail::base::proxy_continuable<cti::detail::identity<>, cti::detail::operations::async<single_dimension_tests_wait_for_test_unlocked_empty_result_Test<provide_copyable>::TestBody()::<lambda()>, cti::detail::types::this_thread_executor_tag>(single_dimension_tests_wait_for_test_unlocked_empty_result_Test<provide_copyable>::TestBody()::<lambda()>&&, cti::detail::types::this_thread_executor_tag&&)::<lambda(auto:62&&)> >; Annotation = cti::detail::identity<>]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:156:3:   required from ‘void single_dimension_tests_wait_for_test_unlocked_empty_result_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = provide_copyable]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:155:1:   required from here
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:241:12: error: no matching function for call to ‘cti::detail::transforms::unlocker<cti::result<> >::unlocker(<brace-enclosed initializer list>)’
  240 |   std::move(continuable)
      |   ~~~~~~~~~~~~~~~~~~~~~~
  241 |       .next(unlocker<Result>{std::weak_ptr<frame_t>(frame)})
      |       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:3: note: candidate: ‘cti::detail::transforms::unlocker<Result>::unlocker(cti::detail::transforms::unlocker<Result>&&) [with Result = cti::result<>]’
  191 |   unlocker(unlocker&&) = default;
      |   ^~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:12: note:   no known conversion for argument 1 from ‘std::weak_ptr<cti::detail::transforms::wait_frame<cti::result<> > >’ to ‘cti::detail::transforms::unlocker<cti::result<> >&&’
  191 |   unlocker(unlocker&&) = default;
      |            ^~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp: In instantiation of ‘Result cti::detail::transforms::wait_unsafe(cti::continuable_base<Data, Annotation>&&, Waiter&&) [with Data = cti::detail::base::chained_continuation<cti::detail::identity<>, cti::detail::identity<>, cti::detail::base::handle_results::no, cti::detail::base::handle_errors::forward, cti::detail::base::ready_continuation<>, cti::detail::base::detail::exception_stripper_proxy<single_dimension_tests_wait_for_test_exception_unlocked_void_failure_handle_Test<provide_copyable>::TestBody()::<lambda(cti::exception_t)> >, cti::detail::types::this_thread_executor_tag>; Annotation = cti::detail::identity<>; Waiter = cti::transforms::wait_for<long int, std::ratio<3600> >(std::chrono::duration<long int, std::ratio<3600> >)::<lambda(auto:46&&)>::<lambda(cti::detail::transforms::condition_variable_t&, cti::detail::transforms::lock_t&, auto:47&&)>; Result = cti::result<>]’:
/home/kasper/Documents/continuable/include/continuable/transforms/wait.hpp:99:43:   required from ‘cti::transforms::wait_for<long int, std::ratio<3600> >(std::chrono::duration<long int, std::ratio<3600> >)::<lambda(auto:46&&)> [with auto:46 = cti::continuable_base<cti::detail::base::chained_continuation<cti::detail::identity<>, cti::detail::identity<>, cti::detail::base::handle_results::no, cti::detail::base::handle_errors::forward, cti::detail::base::ready_continuation<>, cti::detail::base::detail::exception_stripper_proxy<single_dimension_tests_wait_for_test_exception_unlocked_void_failure_handle_Test<provide_copyable>::TestBody()::<lambda(cti::exception_t)> >, cti::detail::types::this_thread_executor_tag>, cti::detail::identity<> >]’
/home/kasper/Documents/continuable/include/continuable/continuable-base.hpp:480:38:   required from ‘auto cti::continuable_base<Data, Annotation>::apply(T&&) && [with T = cti::transforms::wait_for<long int, std::ratio<3600> >(std::chrono::duration<long int, std::ratio<3600> >)::<lambda(auto:46&&)>; Data = cti::detail::base::chained_continuation<cti::detail::identity<>, cti::detail::identity<>, cti::detail::base::handle_results::no, cti::detail::base::handle_errors::forward, cti::detail::base::ready_continuation<>, cti::detail::base::detail::exception_stripper_proxy<single_dimension_tests_wait_for_test_exception_unlocked_void_failure_handle_Test<provide_copyable>::TestBody()::<lambda(cti::exception_t)> >, cti::detail::types::this_thread_executor_tag>; Annotation = cti::detail::identity<>]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:149:3:   required from ‘void single_dimension_tests_wait_for_test_exception_unlocked_void_failure_handle_Test<gtest_TypeParam_>::TestBody() [with gtest_TypeParam_ = provide_copyable]’
/home/kasper/Documents/continuable/test/unit-test/async/test-continuable-async.cpp:147:1:   required from here
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:241:12: error: no matching function for call to ‘cti::detail::transforms::unlocker<cti::result<> >::unlocker(<brace-enclosed initializer list>)’
  240 |   std::move(continuable)
      |   ~~~~~~~~~~~~~~~~~~~~~~
  241 |       .next(unlocker<Result>{std::weak_ptr<frame_t>(frame)})
      |       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:3: note: candidate: ‘cti::detail::transforms::unlocker<Result>::unlocker(cti::detail::transforms::unlocker<Result>&&) [with Result = cti::result<>]’
  191 |   unlocker(unlocker&&) = default;
      |   ^~~~~~~~
/home/kasper/Documents/continuable/include/continuable/detail/transforms/wait.hpp:191:12: note:   no known conversion for argument 1 from ‘std::weak_ptr<cti::detail::transforms::wait_frame<cti::result<> > >’ to ‘cti::detail::transforms::unlocker<cti::result<> >&&’
  191 |   unlocker(unlocker&&) = default;
      |            ^~~~~~~~~~
make[2]: *** [test/unit-test/CMakeFiles/test-continuable-async.dir/build.make:76: test/unit-test/CMakeFiles/test-continuable-async.dir/async/test-continuable-async.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:593: test/unit-test/CMakeFiles/test-continuable-async.dir/all] Error 2
make: *** [Makefile:166: all] Error 2

Your Environment

  • OS: Ubuntu 22.04
  • Compiler and version: gcc 11.3.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant