[all-commits] [llvm/llvm-project] 981ce8: [ADT] Fix const-correctness issues in `zippy`
Jakub Kuderski via All-commits
all-commits at lists.llvm.org
Tue Feb 28 13:29:13 PST 2023
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 981ce8fa15afa11d083033240edb1daff29081c7
https://github.com/llvm/llvm-project/commit/981ce8fa15afa11d083033240edb1daff29081c7
Author: Jakub Kuderski <kubak at google.com>
Date: 2023-02-28 (Tue, 28 Feb 2023)
Changed paths:
M llvm/include/llvm/ADT/STLExtras.h
M llvm/unittests/ADT/IteratorTest.cpp
Log Message:
-----------
[ADT] Fix const-correctness issues in `zippy`
This defines the iterator tuple based on the storage type of `zippy`,
instead of its type arguments. This way, we can support temporaries that
gets passed in and allow for them to be modified during iteration.
Because the iterator types to the tuple storage can have different types
when the storage is and isn't const, this defines a const iterator type
and non-const `begin`/`end` functions. This way we avoid unintentional
casts, e.g., trying to cast `vector<bool>::reference` to
`vector<bool>::const_reference`, which may be unrelated types that are
not convertible.
This patch is a general and free-standing improvement but my primary use
is in the implemention a version of `enumerate` that accepts multiple ranges:
D144583.
Reviewed By: dblaikie, zero9178
Differential Revision: https://reviews.llvm.org/D144834
More information about the All-commits
mailing list