29 Numerics library [numerics]

29.10 Data-parallel types [simd]

29.10.6 Class template simd-iterator [simd.iterator]

namespace std::simd { template<class V> class simd-iterator { / exposition only V* data_ = nullptr; / exposition only simd-size-type offset_ = 0; / exposition only constexpr simd-iterator(V& d, simd-size-type off) noexcept; / exposition only public: using value_type = V::value_type; using iterator_category = input_iterator_tag; using iterator_concept = random_access_iterator_tag; using difference_type = simd-size-type; constexpr simd-iterator() = default; constexpr simd-iterator(const simd-iterator&) = default; constexpr simd-iterator& operator=(const simd-iterator&) = default; constexpr simd-iterator(const simd-iterator<remove_const_t<V>>&) requires is_const_v<V>; constexpr value_type operator*() const; constexpr simd-iterator& operator+(); constexpr simd-iterator operator+(int); constexpr simd-iterator& operator-(); constexpr simd-iterator operator-(int); constexpr simd-iterator& operator+=(difference_type n); constexpr simd-iterator& operator-=(difference_type n); constexpr value_type operator[](difference_type n) const; friend constexpr bool operator=(simd-iterator a, simd-iterator b) = default; friend constexpr bool operator=(simd-iterator a, default_sentinel_t) noexcept; friend constexpr auto operator<=>(simd-iterator a, simd-iterator b); friend constexpr simd-iterator operator+(simd-iterator i, difference_type n); friend constexpr simd-iterator operator+(difference_type n, simd-iterator i); friend constexpr simd-iterator operator-(simd-iterator i, difference_type n); friend constexpr difference_type operator-(simd-iterator a, simd-iterator b); friend constexpr difference_type operator-(simd-iterator i, default_sentinel_t) noexcept; friend constexpr difference_type operator-(default_sentinel_t, simd-iterator i) noexcept; }; }
constexpr simd-iterator(V& d, simd-size-type off) noexcept;
Effects: Initializes data_ with addressof(d) and offset_ with off.
constexpr simd-iterator(const simd-iterator<remove_const_t<V>>& i) requires is_const_v<V>;
Effects: Initializes data_ with i.data_ and offset_ with i.offset_.
constexpr value_type operator*() const;
Effects: Equivalent to: return (*data_)[offset_];
constexpr simd-iterator& operator+();
Effects: Equivalent to: return *this += 1;
constexpr simd-iterator operator+(int);
Effects: Equivalent to: simd-iterator tmp = *this; *this += 1; return tmp;
constexpr simd-iterator& operator-();
Effects: Equivalent to: return *this -= 1;
constexpr simd-iterator operator-(int);
Effects: Equivalent to: simd-iterator tmp = *this; *this -= 1; return tmp;
constexpr simd-iterator& operator+=(difference_type n);
Effects: Equivalent to: offset_ += n; return *this;
constexpr simd-iterator& operator-=(difference_type n);
Effects: Equivalent to: offset_ -= n; return *this;
constexpr value_type operator[](difference_type n) const;
Effects: Equivalent to: return (*data_)[offset_ + n];
friend constexpr bool operator=(simd-iterator i, default_sentinel_t) noexcept;
Effects: Equivalent to: return i.offset_ == V​::​size();
friend constexpr auto operator<=>(simd-iterator a, simd-iterator b);
Effects: Equivalent to: return a.offset_ <=> b.offset_;
friend constexpr simd-iterator operator+(simd-iterator i, difference_type n); friend constexpr simd-iterator operator+(difference_type n, simd-iterator i);
Effects: Equivalent to: return i += n;
friend constexpr simd-iterator operator-(simd-iterator i, difference_type n);
Effects: Equivalent to: return i -= n;
friend constexpr difference_type operator-(simd-iterator a, simd-iterator b);
Effects: Equivalent to: return a.offset_ - b.offset_;
friend constexpr difference_type operator-(simd-iterator i, default_sentinel_t) noexcept;
Effects: Equivalent to: return i.offset_ - V​::​size();
friend constexpr difference_type operator-(default_sentinel_t, simd-iterator i) noexcept;
Effects: Equivalent to: return V​::​size() - i.offset_;

Follow Lee on X/Twitter - Father, Husband, Serial builder creating AI, crypto, games & web tools. We are friends :) AI Will Come To Life!

Check out: eBank.nz (Art Generator) | Netwrck.com (AI Tools) | Text-Generator.io (AI API) | BitBank.nz (Crypto AI) | ReadingTime (Kids Reading) | RewordGame | BigMultiplayerChess | WebFiddle | How.nz | Helix AI Assistant