[clang] [clang][NFC] Use range-based for loop and algorithms in `SemaDeclCXX.cpp` (PR #169938)
Aaron Ballman via cfe-commits
cfe-commits at lists.llvm.org
Tue Dec 2 11:11:11 PST 2025
================
@@ -17969,13 +17949,9 @@ DeclResult Sema::ActOnTemplatedFriendTag(
if (Invalid) return true;
- bool isAllExplicitSpecializations = true;
- for (unsigned I = TempParamLists.size(); I-- > 0; ) {
- if (TempParamLists[I]->size()) {
- isAllExplicitSpecializations = false;
- break;
- }
- }
+ const bool isAllExplicitSpecializations = std::all_of(
----------------
AaronBallman wrote:
> I can't find this in the coding standard and I can't find a Discourse topic about this. Is there documentation somewhere that I can read to get the justification for this? There are counter-examples in this same file (for instance, in `Sema::CheckShadowInheritedFields`) and it definitely helps my understanding to know a variable isn't mutated.
We're consistently inconsistent because folks will slip them in from time to time, but I concur with the review feedback; drop top-level `const` on anything that's not a data member. The reason is: very little of the code base is `const` correct (we're slowly trying to improve that) and we have plenty of `const_cast` use in the code base. So declaring the object as actually `const` is in danger of accidentally turning that into UB (whereas leaving it non-`const` means we still have a maintenance task to attend to, but at least it's not turned into a bug).
https://github.com/llvm/llvm-project/pull/169938
More information about the cfe-commits
mailing list