gcc编译时报错如图:
错误分析:
map返回是是一个map::iterater类型的返回值,并不是引用,所以这个迭代器就是一个临时变量,然而我用一个auto&去引用一个临时变量就会出错,因为非const的话表示变量可修改,然而对一个临时变量进行修改操作是非法的,编译器会直接抛出警告。
正确写法:
const auto& it = map.find(enumType)
加上const表示不会对临时变量进行修改,所以编译器不会报错