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;