https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61597
--- Comment #16 from Jonathan Wakely <redi at gcc dot gnu.org> --- Marc: struct Iter { Iter& operator+=(int) { return *this; } int operator*() { return i; } int i; }; Iter& func(Iter iter, int n) { return iter += n; } int main() { Iter iter = Iter(); Iter it = func(iter, 2); return *it; }