int
может быть преобразовано как в double
, так и в unsigned
; оба
считаются «расширяющимися» конверсиями и имеют равный ранг. В целом
Правило, каждый раз, когда вы перегружаете, и одна из перегрузок является интегральной
типа, это хорошая идея перегрузить на int
, чтобы быть уверенным в
получать то, что вы хотите, и избегать двусмысленностей, когда кто-то пытается
передать интегральную константу.
Кстати: хотя в контексте ясно, что вы имеете в виду, в стандарте C ++
«продвижение» имеет очень точное значение и не включает
преобразование int
в unsigned int
.