Ключевое слово auto

В C++, начиная с С++11, существует ключевое слово auto. Оно позволяет не прописывать тип переменной при её создании и определять его автоматически из выражения, которое используется для инициализации переменной.

Например:

auto year = 1918;

Компилятор увидит справа целое число и заменит auto на int.

По очевидным причинам, переменная, создаваемая при помощи типа auto должна сразу же быть проинициализирована - иначе компилятор не сможет понять, к какому типу она принадлежит.

Очень важно понимать, что использование auto не означает, что мы создаём какую-то переменную "без типа".

auto - это просто синтаксический сахар для более удобного определения переменных.

Реальный пример использования

std::map<std::string, std::pair<std::optional<int32_t>, std::vector<std::string >>> f()
{
    // ...
}

Предположим, у нас есть вот такая функция с ужасно длинным в плане написания возвращаемым значением. В данном контексте не важно, что такое std::map, std::string и прочее (это будет рассмотрено на следующих уроках) - важно только то, что возвращаемое значение очень длинное.

И теперь представим, что нам нужно положить результат выполнения этой функции в какую-то переменную. Без auto, нам снова пришлось бы вручную прописывать весь этот ужас. А что, если нам нужно создать 5 переменных, которые хранят результат вызова этой функции?

Здесь как раз идеальная ситуация для использования auto:

auto f_result = f();

Источники

  1. Документация C++ по спецификаторам типа заполнителя