make

Convenience function for constructing a generic container.

template make(alias Container, Args...)
make
(
Range
)
(
Range range
)
if (
!isDynamicArray!Range &&
&&
!isInfinite!Range
)
if (
!is(Container)
)

Examples

forbid construction from infinite range

import std.container.array : Array;
import std.range : only, repeat;
import std.range.primitives : isInfinite;
static assert(__traits(compiles, { auto arr = make!Array(only(5)); }));
static assert(!__traits(compiles, { auto arr = make!Array(repeat(5)); }));
1 import std.algorithm.comparison : equal;
2 import std.container.array, std.container.rbtree, std.container.slist;
3 import std.range : iota;
4 
5 auto arr = make!Array(iota(5));
6 assert(equal(arr[], [0, 1, 2, 3, 4]));
7 
8 auto rbtmax = make!(RedBlackTree, "a > b")(iota(5));
9 assert(equal(rbtmax[], [4, 3, 2, 1, 0]));
10 
11 auto rbtmin = make!RedBlackTree(4, 1, 3, 2);
12 assert(equal(rbtmin[], [1, 2, 3, 4]));
13 
14 alias makeList = make!SList;
15 auto list = makeList(1, 7, 42);
16 assert(equal(list[], [1, 7, 42]));

Meta

Suggestion Box / Bug Report