Ricerca…


introduzione

La parola chiave decltype può essere utilizzata per ottenere il tipo di una variabile, una funzione o un'espressione.

Esempio di base

Questo esempio illustra come è possibile utilizzare questa parola chiave.

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'

Se, ad esempio, qualcuno cambia, digita "a" per:

float a=99.0f;

Quindi il tipo di variabile b ora diventa automaticamente float .

Un altro esempio

Diciamo che abbiamo il vettore:

std::vector<int> intVector;

E vogliamo dichiarare un iteratore per questo vettore. Un'idea ovvia è usare l' auto . Tuttavia, potrebbe essere necessario semplicemente dichiarare una variabile iteratore (e non assegnarla a qualcosa). Vorremmo fare:

vector<int>::iterator iter;

Tuttavia, con decltype diventa facile e meno soggetto a errori (se il tipo di intVector cambia).

decltype(intVector)::iterator iter;

In alternativa:

decltype(intVector.begin()) iter;

Nel secondo esempio, il tipo di ritorno di begin viene utilizzato per determinare il tipo effettivo, che è vector<int>::iterator .

Se abbiamo bisogno di un const_iterator, abbiamo solo bisogno di usare cbegin :

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow