型推論はC++11で追加された機能で変数宣言時に型を自動的に決定してくれる便利なものです。
例えば、今までのやり方では変数宣言はこのように書いていたと思います。
int a=10; float b=20.0f; double c=30.0; char d='d'; bool e=true; std::vector<int>::iterator it;
しかし、型推論を使うことにより、このようにスッキリとした記述にすることができます。
auto a=10; auto b=20.0f; auto c=30.0; auto d='d'; auto e=true; auto it;
auto型の仕組みはコンパイル時にオペランドから型を推測して決定します。
そのため動的な型ではないので宣言時にオペランドがないものや、条件分岐で戻り値の型が異なるものの代入を扱うことはできません。
auto型を使用してエラーが出た際にはそこを意識して探すと見つかる場合が多いです。
注意点としてはauto型はあくまでも型を変換しているだけなので、参照などにする場合には明示的な記述が必要です。
例えばこんな例です。
auto a=c; auto& b=c;
この場合上の文ではコピーが発生しますが下は参照のためコピーは発生しません。
その型を参照にしたいのかどうかまでの判断はコンパイラにはできないことを知っているにもかかわらずautoを利用すると忘れる人がいますので気をつけましょう。