авто переменная и ее тип

Я нашел в посте, как удалять элементы из контейнера с помощью итератора. Во время итерации:

for(auto it = translationEvents.begin(); it != translationEvents.end();)
{
auto next = it;
++next; // get the next element
it->second(this); // process (and maybe delete) the current element
it = next; // skip to the next element
}

Почему auto используется без типа в auto next = it;?

Я использую VS10, а не C ++ 11!

7

Решение

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

Этот вывод типа полезен, когда печатание уродливых длинных типов не имеет смысла. Часто тип очевиден из инициализатора. Это также полезно для переменных, тип которых может зависеть от того, в каком экземпляре шаблона он появляется.

Многие функции C ++ 11 поддерживаются по умолчанию в VC10 и auto это один из них.

13

Другие решения

Это сокращение в новых версиях C ++, которое позволяет нам избежать неуклюжих обозначений итераторов, поскольку компилятор может определить, каким должен быть реальный тип.

5

Это называется Вывод типа, смотрите также этот вопрос для деталей. Новое в C ++ 11 и предназначено для упрощения многих длинных и ненужных кодов, особенно для итераторов и привязок функций.

3

Это называется вывод типа. Тип автоматической переменной определяется типом инициализатора.

Например, это уменьшает количество типов для больших и сложных типов шаблонов.

3