std::experimental::split(3)

NAME
std::experimental::split - std::experimental::split

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