Zoeken…


Invoering

Het sleutelwoord decltype kan worden gebruikt om het type van een variabele, functie of een uitdrukking te krijgen.

Basis voorbeeld

Dit voorbeeld illustreert alleen hoe dit trefwoord kan worden gebruikt.

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'

Als bijvoorbeeld iemand verandert, typt u 'a' in:

float a=99.0f;

Dan wordt het type variabele b nu automatisch float .

Een ander voorbeeld

Laten we zeggen dat we vector hebben:

std::vector<int> intVector;

En we willen een iterator voor deze vector declareren. Een voor de hand liggend idee is om auto te gebruiken. Het kan echter nodig zijn om gewoon een iteratorvariabele te declareren (en deze aan niets toe te wijzen). We zouden doen:

vector<int>::iterator iter;

Met decltype het echter gemakkelijk en minder foutgevoelig (als het type intVector verandert).

decltype(intVector)::iterator iter;

Alternatief:

decltype(intVector.begin()) iter;

In het tweede voorbeeld wordt het retourtype begin gebruikt om het werkelijke type te bepalen, namelijk vector<int>::iterator .

Als we een const_iterator nodig hebben, moeten we gewoon cbegin :

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow