<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><font size="+1">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.</font></p>
    <p><font size="+1">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.</font><br>
    </p>
    <br>
    <div class="moz-cite-prefix">On 8/6/2017 3:17 PM, David Blaikie
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAENS6EtJmzn0pKEUiDxSOY-orocMD1QqXRqeCTjwfecXTAMWjw@mail.gmail.com">
      <div dir="ltr">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)</div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr">On Sun, Aug 6, 2017 at 11:52 AM Mandeep Singh
          Grang via Phabricator <<a
            href="mailto:reviews@reviews.llvm.org"
            moz-do-not-send="true">reviews@reviews.llvm.org</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">mgrang added
          inline comments.<br>
          <br>
          <br>
          ================<br>
          Comment at: include/llvm/Support/PointerLikeTypeTraits.h:35<br>
          +// Trait to check if T is pointer.<br>
          +template<typename T><br>
          +struct is_pointer { static const bool value = false; };<br>
          ----------------<br>
          mgrang wrote:<br>
          > Just checking if T is a complete type is not enough due
          to the presence of specialization for const T:<br>
          > template <typename T> class
          PointerLikeTypeTraits<const T><br>
          ><br>
          > 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.<br>
          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)?<br>
          <br>
          <br>
          Repository:<br>
            rL LLVM<br>
          <br>
          <a href="https://reviews.llvm.org/D35043" rel="noreferrer"
            target="_blank" moz-do-not-send="true">https://reviews.llvm.org/D35043</a><br>
          <br>
          <br>
          <br>
        </blockquote>
      </div>
    </blockquote>
    <br>
  </body>
</html>