forked from OSchip/llvm-project
![]() Instead of overloading `__to_address`, let's specialize `pointer_traits`. Function overloads need to be in scope at the point where they're called, whereas template specializations do not. (User code can provide pointer_traits specializations to be used by already-included library code, so obviously `__wrap_iter` can do the same.) `pointer_traits<__wrap_iter<It>>` cannot provide `pointer_to`, because you generally cannot create a `__wrap_iter` without also knowing the identity of the container into which you're trying to create an iterator. I believe this is OK; contiguous iterators are required to provide `to_address` but *not* necessarily `pointer_to`. Differential Revision: https://reviews.llvm.org/D110198 |
||
---|---|---|
.. | ||
pointer.traits.functions | ||
pointer.traits.types | ||
difference_type.pass.cpp | ||
element_type.pass.cpp | ||
pointer.pass.cpp | ||
pointer_to.pass.cpp | ||
rebind.pass.cpp |