[PATCH] D72217: [clang-tidy] Added readability-qualified-auto check

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue Jan 28 04:05:21 PST 2020


sammccall added a comment.

In D72217#1844204 <https://reviews.llvm.org/D72217#1844204>, @njames93 wrote:

> https://llvm.org/docs/CodingStandards.html#beware-unnecessary-copies-with-auto
>
>   // Copy pointers, but make it clear that they're pointers.
>   for (const auto *Ptr : Container) { observe(*Ptr); }
>   for (auto *Ptr : Container) { Ptr->change(); }
>
>
> This is the reasoning behind putting the const qualifier in the check. If people feel that this isn't quite enough to justify the const qualifier I'll submit a follow up. The general consensus though is that you should mark auto pointers as const if they don't need to change to express intent


The text/rule there is explicitly about avoiding/clarifying copies - the examples indeed use 'const' but AFAICT the "don't copy" reasoning only applies to including *&.

FWIW I think const here is often noise, particularly in AST-walking code where you're traversing an edge from an X* to a Y* - the latter will be const if the former is, and I care at API boundaries but not in between. (It's usually a meaningless distinction - e.g. we're just reading but it's a non-const pointer because RecursiveASTVisitor isn't const-friendly).

So while spelling const is often helpful, we shouldn't (and don't) require it, and the current config of this check is too intrusive.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D72217/new/

https://reviews.llvm.org/D72217





More information about the cfe-commits mailing list