Decltype de C ++

Decltype de C ++
"La inferencia de tipo es la determinación automática del tipo de datos de una declaración en un lenguaje de computadora. Los posibles valores de una expresión en tiempo de ejecución se limitaron a la declaración manual de cada tipo de datos antes de C ++ 11. Si podemos usar la inferencia de tipo, podemos escribir menos código para expresar algo que el compilador ya entiende. Aunque el tiempo de compilación aumenta significativamente ya que todos los tipos se determinan solo durante la fase del compilador, el tiempo de ejecución del programa no se ve afectado. Aquí, discutiremos el Declype de la palabra clave C ++ y su funcionalidad."

¿Qué es Decltype en c?++

Mira el tipo de una entidad o una expresión establecida. DeclType es un tipo de operador que examina el tipo de expresión dada, en lugar de "auto", que le permite definir una variable con un determinado tipo pero le permite recuperar el tipo de la variable. DeclType proporciona información de tipo durante la compilación y por typeId durante la ejecución. Como resultado, si un objeto de una clase derivada tiene una referencia de clase base o un puntero que le apunta, TypeID proporcionará la referencia de tipo derivado o el puntero en lugar de Tipo, que será proporcionado por DeclType.

Cuando es necesario conocer el tipo dinámico de un objeto, se utiliza el operador typeId. Sin embargo, el nombre real que se devuelve depende de un compilador.

La sintaxis general C ++ proporciona DeclType es la siguiente:

Sintaxis:

decltype (expresión)

El decltype solo toma un parámetro, que es una expresión. El DeclType devuelve el tipo de parámetro de expresión. Usando las siguientes pautas, el compilador depende del tipo de parámetro de expresión.

  • Cuando el parámetro de expresión es un acceso a un miembro de clase o un identificador, el tipo de objeto identificado por la expresión es decltype (expresión). Si dicho objeto no existe o si el argumento de expresión especifica un grupo de funciones sobrecargadas, el compilador emite un mensaje de error.
  • Si la expresión de entrada llama a un método o una función de operador con muchas sobrecargas, el tipo de retorno de una función dada es DeclType (expresión).

Ejemplo 1

La implementación de la discusión anterior viene dada por el código DeclType. Ya que más de una variable, función, clase, etc., no puede tener el mismo nombre en el alcance idéntico. Por lo tanto, el espacio de nombres se introduce para resolver este problema. Después de esto, hemos establecido la función "my_func1" que devuelve el valor entero "5", ya que inicialmente hemos especificado el tipo de datos int a la función "my_func1".

Nuevamente, hemos establecido una función como "my_func2" y le ha asignado un tipo de datos de char. Esta función devuelve el valor del personaje "I". A continuación, hemos construido el int Main () del programa, donde hemos implementado el modificador DeclType. El modificador DeclType toma el "my_func1" y "my_func2" como argumento, respectivamente. Para el Decltype, también hemos definido las dos variables como "A" y "B".

Las variables "A" y "B" tienen los mismos tipos de datos que el tipo de retorno de "my_func1" y "my_func2". Luego, tenemos una declaración de cout en la que el tipoD toma las variables "A" y "B" como entrada y devolveremos el tipo de estas variables.

#incluir
usando el espacio de nombres STD;
int my_func1 () return 5;
char my_func2 () return 'l';
int main ()

declType (my_func1 ()) a;
declType (my_func2 ()) b;
cout<cout<regresar 0;

Como el tipo de "my_func1" es int y "my_func2" es char. Entonces, en la salida, se devuelve el tipo "I" y "C", lo que indica el tipo int y Char.

Ejemplo 2

A continuación se proporciona una ilustración adicional del uso de decltype, que es ligeramente diferente del anterior. Hemos construido directamente el principal () de este programa en particular después de la sección del encabezado. Dentro de la intrain () del programa, hemos declarado la variable "NUM" y le ha asignado un número "10". Luego, hemos llamado al modificador DeclType, que toma la variable "NUM" como parámetro. Con el modificador DeclType, también hemos establecido la variable "I" que tiene el tipo int lo mismo que el tipo de variable "NUM".

Luego, agregamos el NUM y el número "10" utilizando el operador más dentro de la variable "I". Después de esto, tenemos un comando cout donde se invoca el tipoD que toma la variable "i" como entrada y proporciona su tipo.

#incluir
usando el espacio de nombres STD;
int main ()

int num = 10;
decltype (num) i = num + 10;
cout<< "decltype : " <regresar 0;

Como proporcionamos el tipo int a la variable "NUM" en el fragmento de código anterior. La salida muestra la palabra "I", que es el valor de tipo int de la variable "num".

Ejemplo 3

Los números mínimos de los números son devueltos por el método de plantilla C ++ Min tipo (), que se ve a continuación. Se puede usar cualquier tipo integral para los dos números. El tipo mínimo de dos se usa para determinar el tipo de retorno.

Con el modificador automático, hemos creado la función Searchmin () y pasamos las variables x e y como un parámetro dentro de él. Luego, asignamos los nombres de variables a la palabra clave DeclType. El decltype toma la variable con la expresión condicional. La función busca el valor mínimo y devuelve el tipo de variable que tiene el valor mínimo. A continuación, dentro de int Main (), hemos pasado el valor a la función SEATChmin a través del comando Cout.

#incluir
usando el espacio de nombres STD;
plantilla
Searchmin automático (T1 x, t2 y) -> decltype (x < y ? x : y)

regreso (x < y) ? x: y;

int main ()

cout<cout<regresar 0;

La salida mostró los valores mínimos a continuación. A partir de la primera declaración de búsqueda, 4.55 se devuelve del tipo doble. Luego, la segunda declaración, 2, se obtiene del tipo de datos int.

Conclusión

Eso se trata de la decltype de C ++. Lo hemos discutido brevemente con la definición, su sintaxis y su funcionalidad en este artículo en particular. Aquí, hemos demostrado que el DeclType funcione con el código de ejemplo en ejecución en C++. Todas las instancias son distintas entre sí. Las instancias todas difieren entre sí. El script DeclType con el prefijo automático se demuestra en el último ejemplo. La palabra clave de deducción de tipo automática, automática, se usa en C ++ 11 y más allá.