Buscar..


Introducción

La palabra clave decltype se puede usar para obtener el tipo de una variable, función o expresión.

Ejemplo básico

Este ejemplo solo ilustra cómo se puede utilizar esta palabra clave.

int a = 10;

// Assume that type of variable 'a' is not known here, or it may
// be changed by programmer (from int to long long, for example).
// Hence we declare another variable, 'b' of the same type using 
// decltype keyword.
decltype(a) b; // 'decltype(a)' evaluates to 'int'

Si, por ejemplo, alguien cambia, escriba 'a' a:

float a=99.0f;

Entonces el tipo de variable b ahora se convierte automáticamente en float .

Otro ejemplo

Digamos que tenemos vector:

std::vector<int> intVector;

Y queremos declarar un iterador para este vector. Una idea obvia es usar auto . Sin embargo, puede ser necesario simplemente declarar una variable de iterador (y no asignarla a nada). Haríamos:

vector<int>::iterator iter;

Sin embargo, con decltype se vuelve fácil y menos propenso a errores (si cambia el tipo de intVector ).

decltype(intVector)::iterator iter;

Alternativamente:

decltype(intVector.begin()) iter;

En el segundo ejemplo, el tipo de retorno de begin se usa para determinar el tipo real, que es vector<int>::iterator .

Si necesitamos un const_iterator, solo necesitamos usar cbegin :

decltype(intVector.cbegin()) iter; // vector<int>::const_iterator


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow