-
Notifications
You must be signed in to change notification settings - Fork 13
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
created the infrastructure for concurrent queues #97
base: main
Are you sure you want to change the base?
Conversation
We need to active see #100 |
I hope I didn't create any issues! However, I agree: TSAN should probably be run, too. |
Note: there are lots of warnings: [204/400] Building CXX object tests/beman/execution26/CMakeFiles/beman.execution26.bounded-queue.test.dir/bounded-queue.test.cpp.o
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:149:27: warning: declaration shadows a field of 'bounded_queue<T, type-parameter-0-1>' [-Wshadow]
149 | push_sender_queue push_queue(std::move(this->push_queue));
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:354:31: note: previous declaration is here
354 | push_sender_queue push_queue;
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:150:26: warning: declaration shadows a field of 'bounded_queue<T, type-parameter-0-1>' [-Wshadow]
150 | pop_sender_queue pop_queue(std::move(this->pop_queue));
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:356:31: note: previous declaration is here
356 | pop_sender_queue pop_queue;
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:235:31: warning: unused parameter 'element' [-Wunused-parameter]
235 | auto construct(element_t* element, Args&&... args) {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:116:25: warning: declaration shadows a local variable [-Wshadow]
116 | std::error_code ec{};
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:85:21: note: previous declaration is here
85 | std::error_code ec;
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:145:25: warning: declaration shadows a local variable [-Wshadow]
145 | std::error_code ec{};
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:85:21: note: previous declaration is here
85 | std::error_code ec;
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:204:69: warning: unused parameter 'five' [-Wunused-parameter]
204 | auto test_async_pop(auto one, auto two, auto three, auto four, auto five) -> void {
| ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:37:16: warning: 'beman::execution26::bounded_queue<int>::push_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
37 | struct state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:231:96: note: in instantiation of member class 'beman::execution26::bounded_queue<int>::push_sender::state_base' requested here
231 | using push_sender_queue = ::beman::execution26::detail::intrusive_queue<&push_sender::state_base::next>;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:27:79: note: in instantiation of template class 'beman::execution26::bounded_queue<int>' requested here
27 | struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible : integral_constant<bool, __is_nothrow_destructible(_Tp)> {};
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:58:51: note: in instantiation of template class 'std::is_nothrow_destructible<beman::execution26::bounded_queue<int>>' requested here
58 | inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible<_Tp>::value;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: in instantiation of variable template specialization 'std::is_nothrow_destructible_v<beman::execution26::bounded_queue<int>>' requested here
26 | concept destructible = is_nothrow_destructible_v<_Tp>;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: while substituting template arguments into constraint expression here
26 | concept destructible = is_nothrow_destructible_v<_Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:27:30: note: (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
27 | concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while checking the satisfaction of concept 'constructible_from<beman::execution26::bounded_queue<int>, beman::execution26::bounded_queue<int>>' requested here
39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while substituting template arguments into constraint expression here
39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while checking the satisfaction of concept 'move_constructible<beman::execution26::bounded_queue<int>>' requested here
29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while substituting template arguments into constraint expression here
29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:281:23: note: while checking the satisfaction of concept 'movable<beman::execution26::bounded_queue<int>>' requested here
281 | static_assert(not std::movable<test_std::bounded_queue<int>>);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:85:16: warning: 'beman::execution26::bounded_queue<int>::pop_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
85 | struct state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:232:95: note: in instantiation of member class 'beman::execution26::bounded_queue<int>::pop_sender::state_base' requested here
232 | using pop_sender_queue = ::beman::execution26::detail::intrusive_queue<&pop_sender::state_base::next>;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:27:79: note: in instantiation of template class 'beman::execution26::bounded_queue<int>' requested here
27 | struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible : integral_constant<bool, __is_nothrow_destructible(_Tp)> {};
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__type_traits/is_nothrow_destructible.h:58:51: note: in instantiation of template class 'std::is_nothrow_destructible<beman::execution26::bounded_queue<int>>' requested here
58 | inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible<_Tp>::value;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: in instantiation of variable template specialization 'std::is_nothrow_destructible_v<beman::execution26::bounded_queue<int>>' requested here
26 | concept destructible = is_nothrow_destructible_v<_Tp>;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/destructible.h:26:24: note: while substituting template arguments into constraint expression here
26 | concept destructible = is_nothrow_destructible_v<_Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:27:30: note: (skipping 2 contexts in backtrace; use -ftemplate-backtrace-limit=0 to see all)
27 | concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>;
| ^
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while checking the satisfaction of concept 'constructible_from<beman::execution26::bounded_queue<int>, beman::execution26::bounded_queue<int>>' requested here
39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/constructible.h:39:30: note: while substituting template arguments into constraint expression here
39 | concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while checking the satisfaction of concept 'move_constructible<beman::execution26::bounded_queue<int>>' requested here
29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~
/usr/local/Cellar/llvm/19.1.4/bin/../include/c++/v1/__concepts/movable.h:29:39: note: while substituting template arguments into constraint expression here
29 | concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>;
| ^~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:281:23: note: while checking the satisfaction of concept 'movable<beman::execution26::bounded_queue<int>>' requested here
281 | static_assert(not std::movable<test_std::bounded_queue<int>>);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:37:16: warning: 'beman::execution26::bounded_queue<std::string>::push_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
37 | struct state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:231:96: note: in instantiation of member class 'beman::execution26::bounded_queue<std::string>::push_sender::state_base' requested here
231 | using push_sender_queue = ::beman::execution26::detail::intrusive_queue<&push_sender::state_base::next>;
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:16:32: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>' requested here
16 | test_std::bounded_queue<T> queue(1);
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:287:5: note: in instantiation of function template specialization '(anonymous namespace)::test_close<std::string, std::string, std::string>' requested here
287 | test_close<std::string>("one"s, "two"s);
| ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:85:16: warning: 'beman::execution26::bounded_queue<std::string>::pop_sender::state_base' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
85 | struct state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:232:95: note: in instantiation of member class 'beman::execution26::bounded_queue<std::string>::pop_sender::state_base' requested here
232 | using pop_sender_queue = ::beman::execution26::detail::intrusive_queue<&pop_sender::state_base::next>;
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:16:32: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>' requested here
16 | test_std::bounded_queue<T> queue(1);
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:287:5: note: in instantiation of function template specialization '(anonymous namespace)::test_close<std::string, std::string, std::string>' requested here
287 | test_close<std::string>("one"s, "two"s);
| ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:48:16: warning: 'beman::execution26::bounded_queue<int>::push_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
48 | struct state : state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<int>::push_sender::state<receiver>' requested here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:173:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<int>::push_sender, receiver>' requested here
173 | auto op2{test_std::connect(std::move(s2), receiver{c2})}; // connect order also doesn't matter
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:295:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_push<int, int, int, int, int, int>' requested here
295 | test_async_push<int>(1, 2, 3, 4, 5);
| ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:48:16: warning: 'beman::execution26::bounded_queue<std::string>::push_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
48 | struct state : state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>::push_sender::state<receiver>' requested here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:173:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<std::string>::push_sender, receiver>' requested here
173 | auto op2{test_std::connect(std::move(s2), receiver{c2})}; // connect order also doesn't matter
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:296:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_push<std::string, std::string, std::string, std::string, std::string, std::string>' requested here
296 | test_async_push<std::string>("one"s, "two"s, "three"s, "four"s, "five"s);
| ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:94:16: warning: 'beman::execution26::bounded_queue<int>::pop_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
94 | struct state : state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<int>::pop_sender::state<receiver>' requested here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:228:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<int>::pop_sender, receiver>' requested here
228 | auto op4{test_std::connect(std::move(s4), receiver{c4, vals})};
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:297:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_pop<int, int, int, int, int, int>' requested here
297 | test_async_pop<int>(1, 2, 3, 4, 5);
| ^
In file included from /Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:4:
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/bounded_queue.hpp:94:16: warning: 'beman::execution26::bounded_queue<std::string>::pop_sender::state<receiver>' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
94 | struct state : state_base {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:47: note: in instantiation of template class 'beman::execution26::bounded_queue<std::string>::pop_sender::state<receiver>' requested here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/include/beman/execution26/detail/connect.hpp:34:34: note: in instantiation of requirement here
34 | if constexpr (requires { new_sender().connect(::std::forward<Receiver>(receiver)); }) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:228:14: note: in instantiation of function template specialization 'beman::execution26::detail::connect_t::operator()<beman::execution26::bounded_queue<std::string>::pop_sender, receiver>' requested here
228 | auto op4{test_std::connect(std::move(s4), receiver{c4, vals})};
| ^
/Users/clausklein/Workspace/cpp/beman-project/execution26/tests/beman/execution26/bounded-queue.test.cpp:298:5: note: in instantiation of function template specialization '(anonymous namespace)::test_async_pop<std::string, std::string, std::string, std::string, std::string, std::string>' requested here
298 | test_async_pop<std::string>("one"s, "two"s, "three"s, "four"s, "five"s);
| ^
14 warnings generated.
[290/400] Building CXX object examples/CMakeFiles/beman.execution26.examples.doc-just_error.dir/doc-just_error.cpp.o
/Users/clausklein/Workspace/cpp/beman-project/execution26/examples/doc-just_error.cpp:11:10: warning: unused variable 'result' [-Wunused-variable]
11 | auto result = ex::sync_wait(ex::just_error(std::error_code(17, std::system_category())) |
| ^~~~~~
1 warning generated.
[291/400] Building CXX object examples/CMakeFiles/beman.execution26.examples.doc-just_stopped.dir/doc-just_stopped.cpp.o
/Users/clausklein/Workspace/cpp/beman-project/execution26/examples/doc-just_stopped.cpp:13:10: warning: unused variable 'result' [-Wunused-variable]
13 | auto result = ex::sync_wait(ex::just_stopped() | ex::upon_stopped([&] { stopped = true; }));
| ^~~~~~
1 warning generated.
[400/400] Linking CXX executable examples/beman.execution26.examples.doc-just_error
bash-5.2$ |
I haven't run |
It should be generated in the binary directory and may be used like this: make clang-tidy
# or
run-clang-tidy -p build/debug -checks='-*,bugprone-exception-escape' src/beman/execution26/ |
Yes. It certainly worked at some point. However, since a while I get (this is the last line of
I'm not sure what want missing to not emit this file. |
I have addressed the warnings emitted by the CI. Sadly, the current setup fails to build on my Linux machine (a Raspberry PI) although I think I'm using a fairly recent |
* Check and format json and c++ files * Enable more checks * Add pre-commint actions to CI
- fixed various clang-tidy warnings - fixed various gcc warnings - implemented missing noexcept specifications in some places to fix clang-tidy warnings
Signed-off-by: Radu Nichita <radunichita99@gmail.com>
* Fix missing environment in sync_wait * sync_wait: add tests for its environment * fixed a problem with env in sync_wait (and fixed the tests) --------- Co-authored-by: Dietmar Kühl <dietmar.kuehl@me.com>
* Change exported install name to beman::execution26 * adjust the header update script and add missing headers --------- Co-authored-by: Dietmar Kühl <dietmar.kuehl@me.com>
* started to implement on * added structured binding support for types derived from product type * added on algorithm and applies various fixes * fix a silly formatting error * fixed a few warnings
* fixed a few coroutine related issues * fixed formatting issues * reverted te chnage checking the result from unhandled_stopped().
* fixed a few coroutine related issues * fixed formatting issues * reverted te chnage checking the result from unhandled_stopped(). * addressed and issue which resulted in requiring a copy ctor * removed a static_assert left for testing * clang-format
* simplied gather signatures * clang-format * revert CMakeList.txt change * fixed formatting issue
* tried to reduce the uses of sender_decompose * clang-format
* Avoid to export Debug flags * Fix typo and add more options
* added a few examples (some incomplete) * added an example using a timer and fixed an issue with sync_wait * restored cmake presets * clang-format * another attempt at clang-format
No description provided.