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]