https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113308
--- Comment #2 from waffl3x <waffl3x at protonmail dot com> ---
(In reply to Nathaniel Shead from comment #1)
> I believe this is correct behaviour: The definition of `operator++` in the
> child class hides the `operator++` declared in the base class. Similarly to
> the following code:
>
>
> struct base {
> void f(int) {}
> };
> struct d1 : base {
> void f() {}
> };
> struct d2 : base {
> using base::f; // explicitly add base::f as an overload
> void f() {}
> };
>
> int main() {
> d1{}.f(10); // error
> d2{}.f(10); // OK
> }
I'm pretty sure Nathaniel is right,
https://godbolt.org/z/d4r3dTsqa
https://godbolt.org/z/sxz1rcGbb
Mind you, clang and msvc's implementations are buggier than mine so I'm
not going to say "doesn't work on theirs so it isn't a bug" but I don't
think this one is a bug.
Thank you for testing my patch though, I do appreciate it.