This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of New status.

4414. §[simd.traits] rebind and resize reference a type member that doesn't exist

Section: 29.10.4 [simd.traits] Status: New Submitter: Matthias Kretz Opened: 2025-10-15 Last modified: 2025-10-20

Priority: Not Prioritized

View other active issues in [simd.traits].

View all other issues in [simd.traits].

View all issues with New status.

Discussion:

In 29.10.4 [simd.traits] rebind and resize say "deduce-abi-t<T, V::size()> has a member type type". But deduce-abi-t is specified in 29.10.2.2 [simd.expos.abi] p4-5 as an alias that is either defined or not.

Proposed resolution:

This wording is relative to N5014.

  1. Modify 29.10.4 [simd.traits] as indicated:

    template<class T, class V> struct rebind { using type = see below; };
    

    -4- The member type is present if and only if

    1. (4.1) — V is a data-parallel type,

    2. (4.2) — T is a vectorizable type, and

    3. (4.3) — deduce-abi-t<T, V::size()> has a member type type is defined.

    […]
    template<simd-size-type N, class V> struct resize { using type = see below; };
    

    -7- Let T denote […]

    -8- The member type is present if and only if

    1. (8.1) — V is a data-parallel type, and

    2. (8.2) — deduce-abi-t<T, N> has a member type type is defined.