-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # 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.