It looks we can't make it with only T[]. We need a genuine container type, and T[new] was suggested. It would probably have value semantics.T[U] seems to have the same problem. If T[U] is the range, then how do you call the container?
T[new U] ? T[new(U)] ? T[U new] ? you knew...? still, reusing new like that looks pretty akward to me.