template<simd-vec-type V>
constexpr V compress(const V& v, const typename V::mask_type& selector);
template<simd-mask-type V>
constexpr V compress(const V& v, const type_identity_t<V>& 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 V>
constexpr V compress(const V& v, const type_identity_t<V>& 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 V>
constexpr V expand(const V& v, const type_identity_t<V>& selector, const V& original = {});