Requirements for a type whose instances can be split into two pieces.
The following table lists the requirements for a
X with instance
Splittable Concept: Pseudo-Signature, Semantics
A type is splittable if it has a
splitting constructor that allows an instance to be split into
two pieces. The splitting constructor takes as arguments a reference to the
original object, and a dummy argument of type
split, which is defined by the library. The dummy
argument distinguishes the splitting constructor from a copy constructor. After
the constructor runs,
x and the newly constructed object should
represent the two pieces of the original
x. The library uses splitting constructors in
Partitioning a range into two subranges that can be processed concurrently.
Forking a body (function object) into two bodies that can run concurrently.
Range classes might additionally define an optional
proportional splitting constructor, distinguished by an
argument of type
proportional_split. See the
proportional_split Class and
blocked_range Template Class sections for
The following model types provide examples.
blocked_range2d represent splittable ranges. For each
of these, splitting partitions the range into two subranges. See the
blocked_range Template Class section for an example of
the splitting constructor for
The bodies for
parallel_scan must be splittable. For each of these,
splitting results in two bodies that can be run concurrently.