readability-qualified-auto¶
为推断为指针的 auto
类型变量添加指针限定符。
LLVM 编码规范建议明确指出 auto
类型变量是否为指针。此检查将在类型推断为指针时将 auto
转换为 auto *
。
for (auto Data : MutatablePtrContainer) {
change(*Data);
}
for (auto Data : ConstantPtrContainer) {
observe(*Data);
}
将被转换为
for (auto *Data : MutatablePtrContainer) {
change(*Data);
}
for (const auto *Data : ConstantPtrContainer) {
observe(*Data);
}
注意,const
volatile
限定类型将保留其 const
和 volatile
限定符。指向指针的指针将不会被完全限定。
const auto Foo = cast<int *>(Baz1);
const auto Bar = cast<const int *>(Baz2);
volatile auto FooBar = cast<int *>(Baz3);
auto BarFoo = cast<int **>(Baz4);
将被转换为
auto *const Foo = cast<int *>(Baz1);
const auto *const Bar = cast<const int *>(Baz2);
auto *volatile FooBar = cast<int *>(Baz3);
auto *BarFoo = cast<int **>(Baz4);
选项¶
- AddConstToQualified¶
当设置为 true 时,检查将为定义为
auto *
或auto &
的变量添加 const 限定符,如果适用。默认值为 true。
auto Foo1 = cast<const int *>(Bar1);
auto *Foo2 = cast<const int *>(Bar2);
auto &Foo3 = cast<const int &>(Bar3);
如果 AddConstToQualified 设置为 false,它将被转换为
const auto *Foo1 = cast<const int *>(Bar1);
auto *Foo2 = cast<const int *>(Bar2);
auto &Foo3 = cast<const int &>(Bar3);
否则将被转换为
const auto *Foo1 = cast<const int *>(Bar1);
const auto *Foo2 = cast<const int *>(Bar2);
const auto &Foo3 = cast<const int &>(Bar3);
请注意,在 LLVM 别名中,默认值为 false。