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<simd-floating-point V>
constexpr explicit(see below)
basic_vec(const V& reals, const V& 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 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;