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]));
Convenience function for constructing a generic container.