# std::experimental::split

From cppreference.com
< cpp‎ | experimental‎ | simd

Defined in header `<experimental/simd>` |  |
template < std::size_t... Sizes, class T, class Abi > std::tuple<simd<T, simd_abi::deduce_t<T, Sizes>>...> split( const simd<T, Abi>& v ); | (1) |
template < std::size_t... Sizes, class T, class Abi > std::tuple<simd_mask<T, simd_abi::deduce_t<T, Sizes>>...> split( const simd_mask<T, Abi>& v ); | (2) |
template < class V, class Abi > std::array<V, simd_size_v<typename V::value_type, Abi> / V::size()> split( const simd<typename V::value_type, Abi>& v ); | (3) |
template < class V, class Abi > std::array<V, simd_size_v<typename V::value_type, Abi> / V::size()> split( const simd_mask<typename V::value_type, Abi>& v ); | (4) |

Splits the input simd or simd_mask object into multiple simd or simd_mask objects.

1-2) split the input object into potentially different types (e.g. types with different sizes) of objects. These functions do not participate in overloading resolution unless Sizes... sum up to v.size().
3-4) split the input object into a array of objects. These functions do not participate in overloading resolution unless

- The array element must be of type simd or simd_mask, for the type of v as simd or simd_mask, respectively.
- simd_size_v<typename V::value_type, Abi> is an integral multiple of V::size().

### Parameters

v | - | the input simd or simd_mask object

### Return value

1-2) a tuple that contains the splitted simd or simd_mask objects.
3-4) an array that contains the splitted simd or simd_mask objects.

### Example

Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/experimental/simd/split&oldid=111140"