Выведенный тип автоматической переменной для оператора for - PullRequest
0 голосов
/ 29 ноября 2018

Учитывая следующий фрагмент кода:

  for (auto loopcontrol = 0; loopcontrol < 10; loopcontrol++)
  {
     ...
  }

Как определяется тип loopcontrol?

На используемом мной компиляторе C ++ (Microsoft Visual Studio 2017) это int, но почему бы, например, long?

Это тип 0?

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Из документации

Для переменных тип автоматической переменной будет выведен из ее инициализатора.Как только тип инициализатора определен, компилятор определяет тип, который заменит ключевое слово auto, используя правила для вывода аргумента шаблона из вызова функции.

Для функций возвратТип будет выведен из его операторов возврата (начиная с C ++ 14).

Для не шаблонных параметров шаблона тип будет выведен из аргумента (начиная с C ++ 17).

0 голосов
/ 29 ноября 2018

auto выводит тип переменной из выражения инициализации (это распавшийся тип типа инициализатора).В вашем примере тип loopcontrol является типом 0.И тип 0 это int.

...