La diferencia entre plantillas de funciones y funciones de plantilla en C++
Las funciones de plantilla pueden realizar conversiones de tipos de datos implícitas, mientras que las plantillas de funciones no realizan conversiones de tipos automáticas.
I. Si una plantilla de función y una función normal con el mismo nombre están en el mismo alcance, qué función se llamará primero, como se muestra a continuación:
1. Se llamará estrictamente con coincidencia de tipos, y la función ordinaria se llamará mediante la conversión de tipo de parámetro de función (siempre que se realice la conversión de tipo automática).
2. Al llamar a una plantilla de función, la esencia es parametrizar el tipo, que coincidirá estrictamente de acuerdo con el tipo, y no se realizará la conversión automática de tipo. Al llamar a una función ordinaria, puede La conversión de tipo de datos implícita (siempre que sea posible la conversión de tipo automática) es la diferencia esencial entre funciones ordinarias y funciones de plantilla.
2. Las plantillas de funciones se pueden sobrecargar como funciones ordinarias
1. El compilador de C++ dará prioridad a las funciones ordinarias: esto se debe a que las funciones ordinarias ya existen, mientras que las funciones de plantilla requieren más juicio. , si la plantilla de función puede producir una mejor coincidencia, se prefiere la plantilla de función.
2. El compilador puede restringirse a llamar únicamente a plantillas a través de la sintaxis de la lista de argumentos de plantilla vacía (es decir, agregar <> después del nombre del parámetro, ¡inferencia de tipo automática implícita!) y cómo el compilador de C++ admite la Mecanismo de plantilla.