Sorry, "U v = new U(this.x, this.y);" means "U v = U(this.x, this.y);" I tested it with static opCall and also with a normal constructor this(T x, T y)