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;