std::experimental::to_fixed_size, std::experimental::to_native, std::experimental::to_compatible
From cppreference.com
                    
                                        
                    < cpp | experimental | simd
                    
                                                            
                    | Defined in header  <experimental/simd> | ||
| template < class T, class Abi > fixed_size_simd<T, simd_size_v<T, Abi>> | (1) | (parallelism TS v2) | 
| template < class T, class Abi > fixed_size_simd_mask<T, simd_size_v<T, Abi>> | (2) | (parallelism TS v2) | 
| template < class T, std::size_t N > native_simd<T> | (3) | (parallelism TS v2) | 
| template < class T, std::size_t N > native_simd_mask<T> | (4) | (parallelism TS v2) | 
| template < class T, std::size_t N > simd<T> | (5) | (parallelism TS v2) | 
| template < class T, std::size_t N > simd_mask<T> | (6) | (parallelism TS v2) | 
Returns an simd or simd_mask object with the same elements, but a different ABI.
3-6) these functions do not participate in overloading resolution unless N is the same as the size of the return type.
Parameters
| v | - | the input simd or simd_mask object | 
Return value
The simd or simd_mask object with the specified ABI.