fix(run_async): keep allocator arguments out of handler deduction#369
Conversation
A pointer to a derived memory resource deduced as an exact-match completion handler, beating the memory_resource* overloads that need a derived-to-base conversion, then failing to instantiate when the pointer was invoked. The same hijack applied to the second handler position and, once constrained naively, made allocator values ambiguous against the value-allocator overloads. Constrain every deduced handler position with a RunAsyncHandler concept that excludes the types meaningful to the other parameters: memory resource pointers, stop tokens, and allocators.
39ecbe9 to
d81c4eb
Compare
|
An automated preview of the documentation is available at https://369.capy.prtest3.cppalliance.org/index.html If more commits are pushed to the pull request, the docs will rebuild at the same URL. 2026-07-23 13:57:11 UTC |
|
GCOVR code coverage report https://369.capy.prtest3.cppalliance.org/gcovr/index.html Build time: 2026-07-23 14:11:54 UTC |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #369 +/- ##
===========================================
+ Coverage 98.18% 98.33% +0.15%
===========================================
Files 152 152
Lines 8246 8288 +42
===========================================
+ Hits 8096 8150 +54
+ Misses 150 138 -12
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 3 files with indirect coverage changes Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
A pointer to a derived memory resource deduced as an exact-match completion handler, beating the memory_resource* overloads that need a derived-to-base conversion, then failing to instantiate when the pointer was invoked. The same hijack applied to the second handler position and, once constrained naively, made allocator values ambiguous against the value-allocator overloads.
Constrain every deduced handler position with a RunAsyncHandler concept that excludes the types meaningful to the other parameters: memory resource pointers, stop tokens, and allocators.