https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78420

--- Comment #22 from Jason Merrill <jason at gcc dot gnu.org> ---
Hmm, this seems to work:

typedef decltype(sizeof(1)) size_t;

constexpr bool less (const int*a, const int*b)
{
  if (__builtin_constant_p (a < b))
    return a < b;
  return (size_t)a < (size_t)b;
}

int ar[3];
int i;

constexpr bool l1 = less(&ar[0], &ar[1]); // OK
constexpr bool l2 = less(&ar[0], &i);  // error, non-constant

Reply via email to