[libc++] Fix a hard error in `contiguous_iterator<NoOperatorArrowIter>`.
authorKonstantin Varlamov <varconst@apple.com>
Thu, 4 Aug 2022 17:57:58 +0000 (10:57 -0700)
committerKonstantin Varlamov <varconst@apple.com>
Thu, 4 Aug 2022 17:58:21 +0000 (10:58 -0700)
commit52d4c5016c4f8eca6abe84f658fc5f358bdfd2d0
tree1a549f7f861f116b0c87597050be56db7c0f5adb
parent4038c859e58c12e997041927a87e880f2f3ef883
[libc++] Fix a hard error in `contiguous_iterator<NoOperatorArrowIter>`.

Evaluating `contiguous_iterator` on an iterator that satisfies all the
constraints except the `to_address` constraint and doesn't have
`operator->` defined results in a hard error. This is because
instantiating `to_address` ends up instantiating templates
dependent on the given type which might lead to a hard error even
in a SFINAE context.

Differential Revision: https://reviews.llvm.org/D130835
libcxx/include/__memory/pointer_traits.h
libcxx/test/std/iterators/iterator.requirements/iterator.concepts/iterator.concept.random.access/contiguous_iterator.compile.pass.cpp