29 Numerics library [numerics]

29.10 Data-parallel types [simd]

29.10.8 basic_vec non-member operations [simd.nonmembers]

29.10.8.9 vec dynamic permute [simd.permute.dynamic]

template<simd-vec-type V, simd-integral I> constexpr resize_t<I::size(), V> permute(const V& v, const I& indices); template<simd-mask-type M, simd-integral I> constexpr resize_t<I::size(), M> permute(const M& v, const I& indices);
Preconditions: All values in indices are in the range [0, V​::​size()).
Returns: A data-parallel object where the element is initialized to the result of v[indices[i]] for all i in the range [0, I​::​size()).