std.experimental.allocator.building_blocks.segregator.Segregator  - multiple declarations
				Struct Segregator
Dispatches allocations (and deallocations) between two allocators (SmallAllocator and LargeAllocator) depending on the size allocated, as
follows. All allocations smaller than or equal to threshold will be
dispatched to SmallAllocator. The others will go to LargeAllocator.
						
				struct Segregator(ulong threshold, SmallAllocator, LargeAllocator)
				;
						
					
				If both allocators are shared, the Segregator will also offer shared methods.
Methods
| Name | Description | 
|---|---|
| alignedAllocate | This method is defined if both allocators define it, and forwards to SmallAllocatororLargeAllocatorappropriately. | 
| alignedReallocate | This method is defined only if at least one of the allocators defines
        it, and work similarly to reallocate. | 
| allocate | The memory is obtained from SmallAllocatorifs <= threshold,
        orLargeAllocatorotherwise. | 
| allocatorForSize | Composite allocators involving nested instantiations of Segregatormake
    it difficult to access individual sub-allocators stored within.    allocatorForSizesimplifies the task by supplying the allocator nested
    inside aSegregatorthat is responsible for a specific sizes. | 
| deallocate | This function is defined only if both allocators define it, and forwards
        appropriately depending on b. | 
| deallocateAll | This function is defined only if both allocators define it, and calls deallocateAllfor them in turn. | 
| empty | This function is defined only if both allocators define it, and returns
        the conjunction of emptycalls for the two. | 
| expand | This method is defined only if at least one of the allocators defines
        it. If SmallAllocatordefinesexpandandb, the call is forwarded toSmallAllocator. If        LargeAllocatordefinesexpandandb, the
        call is forwarded toLargeAllocator. Otherwise, the call returnsfalse. | 
| goodAllocSize | This method is defined only if at least one of the allocators defines
        it. The good allocation size is obtained from SmallAllocatorif        s <= threshold, orLargeAllocatorotherwise. (If one of the
        allocators does not definegoodAllocSize, the default
        implementation in this module applies.) | 
| owns | This method is defined only if both allocators define it. The call is
        forwarded to SmallAllocatorifb, or        LargeAllocatorotherwise. | 
| reallocate | This method is defined only if at least one of the allocators defines
        it. If SmallAllocatordefinesreallocateandb, the call is forwarded to        SmallAllocator. IfLargeAllocatordefinesexpandand        b, the call is forwarded to        LargeAllocator. Otherwise, the call returnsfalse. | 
Example
import stdAlias Segregator
A Segregator with more than three arguments expands to a composition of
elemental Segregators, as illustrated by the following example:
						
				alias Segregator(Args...)
				 = Segregator!(Args[cutPoint],.Segregator!(Args[0..cutPoint],Args[cutPoint+1]),.Segregator!(Args[cutPoint+2..__dollar]));
						
					
				alias A =
    Segregator!(
        n1, A1,
        n2, A2,
        n3, A3,
        A4
    );With this definition, allocation requests for n1 bytes or less are directed
to A1; requests between n1 + 1 and n2 bytes (inclusive) are
directed to A2; requests between n2 + 1 and n3 bytes (inclusive)
are directed to A3; and requests for more than n3 bytes are directed
to A4. If some particular range should not be handled, NullAllocator
may be used appropriately.
Example
import std