[PATCH] D35043: [ADT] Enable reverse iteration for DenseMap
Grang, Mandeep Singh via llvm-commits
llvm-commits at lists.llvm.org
Sun Aug 6 22:33:20 PDT 2017
I have removed the is_pointer trait. I thought we wanted it to work
exactly for all pointer and pointer-like types. That's the reason I had
an is_pointer trait.
So now how do we define the behavior for reverse iteration? It is no
longer tied to pointer types, right? As long as a type is complete it
will reverse iterate.
On 8/6/2017 3:17 PM, David Blaikie wrote:
> I'd still prefer not to build another trait for this unless we have to
> - is there a reason we'd want is_pointer to not be true for some types
> that are PointerLike? (or conversely, for it to be true for some types
> that aren't PointerLike)
>
> On Sun, Aug 6, 2017 at 11:52 AM Mandeep Singh Grang via Phabricator
> <reviews at reviews.llvm.org <mailto:reviews at reviews.llvm.org>> wrote:
>
> mgrang added inline comments.
>
>
> ================
> Comment at: include/llvm/Support/PointerLikeTypeTraits.h:35
> +// Trait to check if T is pointer.
> +template<typename T>
> +struct is_pointer { static const bool value = false; };
> ----------------
> mgrang wrote:
> > Just checking if T is a complete type is not enough due to the
> presence of specialization for const T:
> > template <typename T> class PointerLikeTypeTraits<const T>
> >
> > In this case, for a const int the type is complete but it's not
> a pointer type. So to handle such cases I had to check for
> is_pointer too.
> We might as well not check for is_complete and just check for
> is_pointer, and then add more specialization for is_pointer of
> other ptr types (like shared, unique ptr, etc)?
>
>
> Repository:
> rL LLVM
>
> https://reviews.llvm.org/D35043
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170806/356c55ec/attachment.html>
More information about the llvm-commits
mailing list