Overload resolution of constructors for different classes

Even if the first conversion in the sequence is of a worse rank, both conversion sequences end up being user defined conversions, since they both convert to a user defined type.

[over.ics.user]

1 A user-defined conversion sequence consists of an initial standard conversion sequence followed by a user-defined conversion ([class.conv]) followed by a second standard conversion sequence.

A user defined conversion anywhere in the implicit conversion sequence gives the entire sequence a "user defined conversion" rank. So the two conversion sequences are in fact of the same rank, and as such neither is better than the other.

The function call is ambiguous on account of that.