https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107981
Fedor Chelnokov <fchelnokov at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |fchelnokov at gmail dot com --- Comment #3 from Fedor Chelnokov <fchelnokov at gmail dot com> --- The main problem as I can see, is that in GCC `operator auto` changes its name after definition: ``` class A { protected: operator auto(); }; template<class> struct B : A { using A::operator auto; }; B<int> bi; // ok everywhere, including GCC A::operator auto() { return 1; } B<char> bc; // ok everywhere, but in GCC ``` Online demo: https://gcc.godbolt.org/z/3cn73EGKs After the definition, it becomes `A::operator int` in GCC, which is not like in other compilers.