On Monday, 24 February 2020 at 19:50:23 UTC, JN wrote: > foreach (i; iota(5)) > { > printers[i] = () { write(i); }; > } This allocates 1 closure and generates 1 lambda, so all printers are identical delegates. You could use a static foreach: NumberPrinter[] printers; static foreach (i; 0..5) printers ~= () { write(i); }; foreach (d; printers) d();