Como ya se indicó, las reglas se describen completamente en la norma. Como regla básica, el compilador seleccionará la sobrecarga que requiere las conversiones menos automáticas, con la advertencia de que nunca aplicará 2 conversiones definidas por el usuario.
Los tipos de enteros se arrojan automáticamente alrededor de un montón. Por lo tanto, si tiene una función sobrecargada en int
y double
, la compilación elegirá la función int
si se llama con una constante que es un número entero. Si no tenía la versión int
, el compilador seleccionaría la double
. Y entre varios tipos de enteros, el compilador prefiere int
para las constantes enteras, porque ese es su tipo. Si se sobrecargó en short
y unsigned short
, pero se llamó con una constante de 5
, el compilador se quejaría de que no podía determinar qué sobrecarga usar.
El libro de Scott Meyers realmente tiene la mejor explicación que he leído.
¿Se refiere a la anulación? – MGZero
Las reglas son muchas ... y complicadas. Todo esto está cubierto en la sección ** 3.4 ** del estándar C++ –
@MGZero - no ... – Belgi