# std::experimental::split, split_by

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 ) noexcept; | (1) | (parallelism TS v2)
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 ) noexcept; | (2) | (parallelism TS v2)
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 ) noexcept; | (3) | (parallelism TS v2)
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 ) noexcept; | (4) | (parallelism TS v2)
template< size_t N, class T, class A > array<resize_simd<simd_size_v<T, A> / N, simd<T, A>>, N> split_by( const simd<T, A>& v ) noexcept; | (5) | (parallelism TS v2)
template< size_t N, class T, class A > array<resize_simd<simd_size_v<T, A> / N, simd_mask<T, A>>, N> split_by( const simd_mask<T, A>& v ) noexcept; | (6) | (parallelism TS v2)

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 an 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().

5-6) Split the input object into an array of objects. These functions shall not participate in overload resolution unless simd_size_v<T, A> is an integral multiple of `N`.

### 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-6) An array that contains the splitted `simd` or `simd_mask` objects.

### Example

| This section is incomplete Reason: no example

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