| 652 | } |
| 653 | |
| 654 | static void operator delete(void* __ptr, size_t __bytes) noexcept |
| 655 | { |
| 656 | size_t const __promise_blocks = __task::__divmod(__bytes, sizeof(__task::__memblock)); |
| 657 | void* const __alloc_loc = static_cast<__task::__memblock*>(__ptr) + __promise_blocks; |
| 658 | auto* __alloc = static_cast<__task::__any_alloc_base*>(__alloc_loc); |
| 659 | __alloc->__deallocate_(__ptr, __bytes); |
| 660 | } |
| 661 | |
| 662 | // When an allocator is passed to the coroutine: |
| 663 | template <class _Alloc, class... _Args> |