import std.range: ElementType; alias ArrayOf (T) = T[]; alias Const (T) = const(T); alias C0 = Compose!(ElementType, ArrayOf); alias C1 = Compose!(ArrayOf, ElementType); alias C2 = Compose!(ElementType, Const, C0); alias C3 = Compose!(ArrayOf, Unqual, C2); alias T = int[5]; static assert (is (C0!T == int[5])); static assert (is (C1!T == int[])); static assert (is (C2!T == const(int))); static assert (is (C3!T == int[]));
compose a list of templates into a single template