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