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