Recherche…
Introduction
Le mot clé decltype
peut être utilisé pour obtenir le type d'une variable, d'une fonction ou d'une expression.
Exemple de base
Cet exemple illustre simplement comment ce mot clé peut être utilisé.
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, par exemple, quelqu'un change, tapez «a» pour:
float a=99.0f;
Le type de variable b
devient alors automatiquement float
.
Un autre exemple
Disons que nous avons un vecteur:
std::vector<int> intVector;
Et nous voulons déclarer un itérateur pour ce vecteur. Une idée évidente est d'utiliser l' auto
. Cependant, il peut être nécessaire de simplement déclarer une variable d'itérateur (et de ne rien lui attribuer). Nous ferions:
vector<int>::iterator iter;
Cependant, avec decltype
cela devient facile et moins sujet aux erreurs (si le type de changements intVector
).
decltype(intVector)::iterator iter;
Alternativement:
decltype(intVector.begin()) iter;
Dans le deuxième exemple, le type de retour de begin
est utilisé pour déterminer le type réel, qui est le vector<int>::iterator
.
Si nous avons besoin d'un const_iterator, il suffit d'utiliser cbegin
:
decltype(intVector.cbegin()) iter; // vector<int>::const_iterator