Ключевое слово ʻauto` было перепрофилировано в C++11 для выведенного типа. При использовании для замены имени типа в объявлении инициализированной переменной переменной присваивается тот же тип, что и инициализатору. При использовании в качестве возвращаемого типа тип возвращаемого значения указывается как завершающий тип возвращаемого значения или выводится из возвращаемого выражения.

Рассмотрим следующий код:

bool Function()
{
    return true;
}

bool result = Function();

Тип возврата Function однозначно известно во время компиляции, поэтому объявление переменной можно заменить на:

auto result = Function();

Тип resultтаким образом будет выведено. Вauto ключевое слово становится очень полезным, когда имя типа длинное:

for (std::vector<MyNamespace::MyType>::const_iterator iter = v.cbegin(); iter != v.cend(); iter++)

C++11 позволяет более короткое объявление:

for (auto iter = v.cbegin(); iter != v.cend(); iter++)

Стоит отметить, что ключевое слово auto изменило значение с появлением C++11, и почти всегда используется в этом новом контексте.