make

Returns an initialized object. This function is mainly for eliminating construction differences between structs and classes. It allows code to not worry about whether the type it's constructing is a struct or a class.

template make(T)
T
make
(
Args...
)
()
if (
is(T == struct) &&
__traits(compiles, T(arguments))
)
if (
is(T == struct) ||
is(T == class)
)

Examples

import std.algorithm.comparison : equal;
import std.container;

auto arr = make!(Array!int)([4, 2, 3, 1]);
assert(equal(arr[], [4, 2, 3, 1]));

auto rbt = make!(RedBlackTree!(int, "a > b"))([4, 2, 3, 1]);
assert(equal(rbt[], [4, 3, 2, 1]));

alias makeList = make!(SList!int);
auto slist = makeList(1, 2, 3);
assert(equal(slist[], [1, 2, 3]));

Meta