[conv.rank]

Floating-point types that have equal floating-point conversion ranks are ordered by floating-point conversion subrank.

The subrank forms a total order among types with equal ranks.

The types std​::​float16_t, std​::​float32_t, std​::​float64_t, and std​::​float128_t ([stdfloat.syn]) have a greater conversion subrank than any standard floating-point type with equal conversion rank.

Otherwise, the conversion subrank order is implementation-defined.