Если вы имеете дело с типом значения, вы можете использовать std.array.replicate.
auto a = replicate([5], 50);
создаст int[]
длины 50, где каждый элемент равен 5. Вы может сделать то же самое со ссылочным типом, но все элементы будут ссылаться на один и тот же объект.
auto a = replicate([new A(5)], 50);
вызовет конструктор A
только один раз, и вызаканчивается A[]
, где все элементы относятся к одному и тому же объекту.Если вы хотите, чтобы они ссылались на отдельные объекты, вам придется либо устанавливать каждый элемент индивидуально
auto a = new A[](50);
foreach(ref e; a)
e = new A(5);
, либо инициализировать весь массив литералом
auto a = [new A(5), new A(5), new A(5)];
Ноочевидно, будет работать только для сравнительно небольших массивов.