C++ Dichiarazione auto e decltype

Da Andreabont's Wiki.

Auto

La parola chiave auto indica un tipo di dato di una variabile, che viene automaticamente definito dal compilatore in base al contesto.
Da notare che non aggira la tipizzazione statica. Il compilatore "decide" che tipo di dato usare, ma una volta deciso non può più essere modificato.
E' utile nel caso di tipi "lunghi", come nel caso dei template.

auto var = 'a';

In questo esempio il compilatore valuterà var come tipo char, in quanto 'a' è un char.

void funzione(const std::vector<int>& vi)
{
  auto it = vi.begin();
}

In questo esempio il compilatore valuta il ritorno di "vi.begin()", che è un iteratore di un vector, quindi assegnerà a it il tipo "std::vector<int>::const_iterator".

Decltype

int i;
decltype(i) var;

L'uso di decltype è simile ad auto, con la differenza che il compilatore assegna il tipo in base al tipo una variabile passata. Nell'esempio "i" è un int, quindi "var" sarà settata come tipo "int".