Co-authored-by: S. B. Tam <cpplearner@outlook.com>
Co-authored-by: Stephan T. Lavavej <stl@microsoft.com>
Co-authored-by: A. Jiang <de34@live.cn>
Co-authored-by: Jakub Mazurkiewicz <mazkuba3@gmail.com>
Co-authored-by: Alex Guteniev <gutenev@gmail.com>
* Implement non-concepts fallback for coroutine_handle operator<=>
... to allow EDG to compile `<coroutine>`. [This is a dual of MSVC-PR-271029.]
* Reorder feature-tests in `<experimental/generator>`
... so it won't notice that Edge defines both `__cpp_impl_coroutine` and `__cpp_coroutines` in C++20 mode.
Also don't test `VSO_0971246_legacy_await_headers` with `/BE /await`; `/await` is meaningless for Edge.
* Library support for C++20 coroutines
Implements most of <coroutine>. Usefulness of this header is dependent
on a compatible compiler (e.g. Visual Studio 2019 16.8 Preview 1 or
later) that defines `__cpp_impl_coroutine`. With such a compiler
this header exposes the coroutine library support in the `std` namespace
without the need for an `/await` switch.
This implementation is not yet complete:
- noop coroutines are not yet implemented
- symmetric transfer is not yet implemented
The value of `__cpp_lib_coroutine` is defined to a value less than the
Standard-mandated value to represent the incomplete feature.
Co-authored-by: Daniel Marshall <xandan@gmail.com>