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

            Bug ID: 64178
           Summary: rejects-valid on variadic operator++
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: richard-gccbugzilla at metafoo dot co.uk

GCC rejects this code, which I think is valid:

  template<typename ...T> void operator++(T...);
  struct X {};
  void f(X x) { ++x; x++; }

Here, f should call operator++<X> then operator++<X, int>. GCC says:

<stdin>:1:45: error: ‘void operator++(T ...)’ must have an argument of class or
enumerated type
<stdin>:1:75: error: no match for ‘operator++’ (operand type is ‘X’)
<stdin>:1:81: error: no ‘operator++(int)’ declared for postfix ‘++’
[-fpermissive]

Reply via email to