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.

Reply via email to