My take is that “CoordList[] temp = [{0, 9}, {1, 1}, {3, 6}];” is
initialization because you're setting the value when defining it
but “trackTemplates[0].coords = [{0, 9}, {1, 1}, {3, 6}];” is an
assignment so the compiler can infer as much and doesn't
understand that each of those list of values are really
CoordLists. For example “ trackTemplates[0].coords =
[CoordList(0, 9), CoordList(1, 1), CoordList(3, 6)];” would have
worked as expected.

{3, 6}];” is an assignment so the compiler can infer as much
and doesn't understand that each of those list of values are
really CoordLists.

I see, but it seems a bit strange given that they are being
assigned to .coords[] which is already defined as of type
CoordList.

trackTemplates[0].coords = [CoordList(0, 9), CoordList(1, 1),
CoordList(3, 6)];” would have worked as expected.

I'd want to avoid this wordy explicit way as the list can extend
to several hundred pairs. Most likely I need a better way to
store the information.
ketmar:
Why is initialisation via {} bad (in simple terms please :D)? I
noticed while working on this bit of code that I could initialise
simple struct variables with {} but couldn't do the same with an
array of structs. I guess this is for the same or similar reason
to the above.
Thanks both for the help.

first, it is buggy. i.e. it doesn't always call postblit[1].
second, it's syntax is the same as the syntax of argument-less
lambda, which makes it context-dependent -- so reader has to make
some mental efforts to find out if it is really lambda or struct
initialization.
for me, it is enough to see it as bad. and for some other people
too. ;-)
[1] https://issues.dlang.org/show_bug.cgi?id=16146

first, it is buggy. i.e. it doesn't always call postblit[1].
second, it's syntax is the same as the syntax of argument-less
lambda, which makes it context-dependent -- so reader has to
make some mental efforts to find out if it is really lambda or
struct initialization.
for me, it is enough to see it as bad. and for some other
people too. ;-)
[1] https://issues.dlang.org/show_bug.cgi?id=16146