Неформально говоря, auto
может использоваться для объявления и инициализации типа одновременно.Затем компилятор может вывести тип из значения, использованного для инициализации переменной.
Но это не тот случай;оператор, подобный
auto n;
, аналогичным образом потерпит неудачу.
Обратите внимание, что auto
просто заменяет тип, который известен во время компиляции .Это делается для того, чтобы сделать код более читабельным, хотя его использование иногда обязательно, например, при работе с лямбда-функциями.Это , а не конструкция типа варианта ср.std::variant
скажем, C ++ 17.
Наконец, обратите внимание, что std::map
- это совсем не то, что зверь * java.util.Map
.В C ++ нет типа стирания , поэтому std::map<A, B>
принципиально отличается от std::map<C, D>
, если A
отличается от C
и / или B
отличается от D
,Кроме того, C ++ позволяет хранить типы значений в картах.