performance-implicit-conversion-in-loop

此警告出现在具有 const ref 类型循环变量的基于范围的循环中,其中变量类型与迭代器返回的类型不匹配。这意味着会发生隐式转换,这可能导致昂贵的深层复制等问题。

示例

map<int, vector<string>> my_map;
for (const pair<int, vector<string>>& p : my_map) {}
// The iterator type is in fact pair<const int, vector<string>>, which means
// that the compiler added a conversion, resulting in a copy of the vectors.

最简单的解决方案通常是使用 const auto& 而不是手动编写类型。