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

--- Comment #4 from Patrick Palka <ppalka at gcc dot gnu.org> ---
And if -(1) is to be mangled the same as -1, then shouldn't

  template<typename T>
  typename std::enable_if<(int)sizeof(T) >= -(1), int>::type size1(T *t);

  template<typename T>
  typename std::enable_if<(int)sizeof(T) >= -1, int>::type size1(T *t);

be considered two declarations of the same function?  But IIUC that would
contradict [temp.over.link]p5, which says

  Two expressions involving template parameters are considered equivalent if
two function definitions containing the expressions would satisfy the
one-definition rule

but IIUC the one-definition rule fails here because -1 is not the same
(token-wise) as -(1).

Reply via email to