[libcxx-commits] [PATCH] D101242: [libcxx][nfc] renames test iterator types to `legacy_*_iterator`
Arthur O'Dwyer via Phabricator via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Apr 26 11:36:54 PDT 2021
Quuxplusone requested changes to this revision.
Quuxplusone added inline comments.
================
Comment at: libcxx/test/support/test_iterators.h:64
public:
typedef std::input_iterator_tag iterator_category;
typedef typename Traits::value_type value_type;
----------------
@cjdb wrote:
> tl;dr yes. At minimum, the iterator tags are now mandatory.
The existing iterators already have tags, though. So that's not a concern for us.
I suggested to Louis in chat but will put here for the record: If the main concern of this patch is to make sure we have a test iterator which is a "non-comparable input iterator" (comparable only to its sentinel type, but not to itself), then I suggest you leave everything the way it is in main but then add the new C++20-only, sentinel-comparison-only test iterator, like this:
```
#if TEST_STD_VER >= 20
template<class It>
class incomparable_input_iterator {
// This is an input iterator according to C++>=20, but not according to C++<=17.
// It is comparable with its sentinel type, but not with its own type.
[...mostly the same stuff as the regular input iterator test type...]
public:
struct sentinel {
constexpr explicit sentinel(It it) : it_(it) {}
};
friend constexpr bool operator==(const incomparable_input_iterator& x, const sentinel& y)
{return x.it_ == y.it_;}
};
#endif
```
This probably belongs right above `contiguous_iterator`, circa line 315, because we intend it to be new in C++20.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D101242/new/
https://reviews.llvm.org/D101242
More information about the libcxx-commits
mailing list