#
using simd-size-type = see below;
template<size_t Bytes> using integer-from = see below;
template<class T, class Abi>
constexpr simd-size-type simd-size-v = see below;
template<class T> constexpr size_t mask-element-size = see below;
template<class T> using deduced-vec-t = see below;
template<class V, class T> using make-compatible-simd-t = see below;
template<class. Ts>
requires math-floating-point<Ts..>
using math-common-simd-t = see below;
template<class BinaryOperation, class T>
concept reduction-binary-operation =
requires (const BinaryOperation binary_op, const vec<T, 1> v) {
{ binary_op(v, v) } -> same_as<vec<T, 1>;
};
template<class T> using native-abi = see below;
template<class T, simd-size-type N> using deduce-abi-t = see below;
template<class T, class U = typename T::value_type> struct alignment { see below };
template<class T, class V> struct rebind { using type = see below; };
template<simd-size-type N, class V> struct resize { using type = see below; };
template<class. Other>
friend consteval auto operator|(flags a, flags<Other..> b);
constexpr simd-iterator(V& d, simd-size-type off) noexcept;
constexpr simd-iterator(const simd-iterator<remove_const_t<V>>& i) 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 i, 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;
template<class U> constexpr explicit(see below) basic_vec(U&& value) noexcept;
template<class U, class UAbi>
constexpr explicit(see below) basic_vec(const basic_vec<U, UAbi>& x) noexcept;
template<class G> constexpr explicit basic_vec(G&& gen);
template<class R, class. Flags>
constexpr basic_vec(R&& r, flags<Flags..> = {});
template<class R, class. Flags>
constexpr basic_vec(R&& r, const mask_type& mask, flags<Flags..> = {});
template<class R, class. Ts>
basic_vec(R&& r, Ts..) -> see below;
template<size_t Bytes, class Abi>
basic_vec(basic_mask<Bytes, Abi> k) -> see below;
constexpr basic_vec(const real-type& reals, const real-type& imags = {}) noexcept;
constexpr value_type operator[](simd-size-type i) const;
template<simd-integral I>
constexpr resize_t<I::size(), basic_vec> operator[](const I& indices) const;
constexpr real-type real() const noexcept;
constexpr real-type imag() const noexcept;
constexpr void real(const real-type& v) noexcept;
constexpr void imag(const real-type& v) noexcept;
constexpr basic_vec& operator+() noexcept;
constexpr basic_vec operator+(int) noexcept;
constexpr basic_vec& operator-() noexcept;
constexpr basic_vec operator-(int) noexcept;
constexpr mask_type operator!() const noexcept;
constexpr basic_vec operator~() const noexcept;
constexpr basic_vec operator+() const noexcept;
constexpr basic_vec operator-() const noexcept;
friend constexpr basic_vec operator+(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator-(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator*(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator/(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator%(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator&(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator|(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator^(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator<(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator>(const basic_vec& lhs, const basic_vec& rhs) noexcept;
friend constexpr basic_vec operator<(const basic_vec& v, simd-size-type n) noexcept;
friend constexpr basic_vec operator>(const basic_vec& v, simd-size-type n) noexcept;