P2929R4 — chunked_invoke
Daniel Towner, Ruslan Arutyunyan
LEWG
Revisions R4May 2026R3Apr 2026R2Feb 2026
ISO/IEC 19570:2018 introduced data-parallel types to the C++ Extensions for Parallelism TS [P1928R15]. That paper, and several ancillary papers, do an excellent job of setting out the main features of an extension to C++ which allows generic data parallel programming on arbitrary targets. However, it is inevitable that the programmer will want to make some use of target-specific intrinsics, or call into legacy libraries that accept fixed-size platform-specific SIMD types such as `__m512`, in order to unlock features of those specific platforms or reuse existing optimized code. This requires that the programmer is able to allow a `basic_vec` value to be used in a call to a target intrinsic or library function, and that the result of that call can be used to generate a new `basic_vec` value. This is already permitted for `basic_vec` values which fit into the expected type, but it is harder to achieve when the `basic_vec` value is larger.