performance-for-range-copy

查找 C++11 范围,其中循环变量在每次迭代中被复制,但可以通过 const 引用获取。

此检查仅应用于类型为循环变量,这些类型复制成本高,这意味着它们不是平凡可复制的,或者具有非平凡的复制构造函数或析构函数。

为了确保用 const 引用替换副本是安全的,使用以下启发式方法:

  1. 循环变量是 const 限定的。

  2. 循环变量不是 const,但只对它调用 const 方法或运算符,或者它在构造函数或函数调用中用作 const 引用或值参数。

选项

WarnOnAllAutoCopies

当为 true 时,会警告在范围型 for 循环变量类型中使用 auto 的任何情况。默认值为 false

AllowedTypes

允许在每次迭代中复制的类型的名称的用分号分隔的列表。接受正则表达式,例如 [Rr]ef(erence)?$ 匹配所有以 RefrefReferencereference 结尾的类型。默认情况下为空。如果列表中的名称包含序列 ::,则它与限定的类型名匹配(即 namespace::Type),否则它仅与类型名匹配(即 Type)。