$1 $2
Row::updatePair(int, long long) // #1
Row::updatePair(int, long double) // #2
// updatePair(924, 0.0);
// int -> int (#1) // $1#1
// int -> int (#2) // $1#2
//
// double -> long long // $2#1
// double -> long double // $2#2
この場合、最初のグループのコンバージョンは両方とも完全一致ですが、2 番目のグループのコンバージョンは両方ともコンバージョンです。それらは均等にランク付けされています - それはint -> long
vsのようなものint -> double
です。もう一方の呼び出しは同じ型で、値が異なるだけなので、同じ動作を示します。
int よりも小さい整数型のみfloat -> double
が int (および一部のエキゾチックなプラットフォームでは unsigned int へ) が昇格であるように、昇格のみです。したがって、以下はあいまいではありません
$1 $2
Row::updatePair(int, double) // #1
Row::updatePair(int, long double) // #2
// updatePair(924, 0.0f);
// int -> int (#1) // $1#1
// int -> int (#2) // $1#2
//
// float -> double // $2#1 (promotion - not a ranked as conversion).
// float -> long double // $2#2
その場合、2 番目の引数は のパラメーターに変換されると、より適切な変換シーケンスになります#1
。