4518. simd::cat return type requires inefficient ABI tag change/conversion

Section: 29.10.3 [simd.syn], 29.10.8.12 [simd.creation] Status: New Submitter: Matthias Kretz Opened: 2025-11-25 Last modified: 2026-02-18

Priority: 2

View all other issues in [simd.syn].

View all issues with New status.

Discussion:

The return type of simd::cat is defined using deduce-abi-t rather than resize_t. This can lead to:

basic_vec<T, Abi> x = […]
auto [...vs] = simd::chunk<2>(x);
auto y = simd::cat(vs...);
static_assert(is_same_v<decltype(x), decltype(y)>); // can fail

[2026-02-13; LWG telecon.]

Setting priority to P2, after P3932R0 (Fix LWG4470: Fix integer-from in [simd]), resolving the issue was accepted on telecon.

Proposed resolution: