template<simd-vec-type V>
constexpr V compress(const V& v, const typename V::mask_type& selector);
template<simd-mask-type M>
constexpr M compress(const M& v, const type_identity_t<M>& selector);
template<simd-vec-type V>
constexpr V compress(const V& v, const typename V::mask_type& selector,
const typename V::value_type& fill_value);
template<simd-mask-type M>
constexpr M compress(const M& v, const type_identity_t<M>& selector,
const typename V::value_type& fill_value);
template<simd-vec-type V>
constexpr V expand(const V& v, const typename V::mask_type& selector, const V& original = {});
template<simd-mask-type M>
constexpr M expand(const M& v, const type_identity_t<M>& selector, const M& original = {});