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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow