Sök…


Introduktion

Nyckelordet decltype kan användas för att få typen av en variabel, funktion eller ett uttryck.

Grundläggande exempel

Detta exempel illustrerar bara hur detta sökord kan användas.

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'

Om till exempel någon ändrar, skriv 'a' till:

float a=99.0f;

Sedan blir typen av variabel b automatiskt float .

Ett annat exempel

Låt oss säga att vi har vektor:

std::vector<int> intVector;

Och vi vill förklara en iterator för denna vektor. En uppenbar idé är att använda auto . Det kan dock behövas bara förklara en iteratorvariabel (och inte tilldela den till någonting). Vi skulle göra:

vector<int>::iterator iter;

Men med decltype blir det enkelt och mindre fel benägna (om typen av intVector ändras).

decltype(intVector)::iterator iter;

Alternativt:

decltype(intVector.begin()) iter;

I det andra exemplet används returtypen för begin för att bestämma den verkliga typen, som är vector<int>::iterator .

Om vi behöver en const_iterator, behöver vi bara använda cbegin :

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


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow