https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85128
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |DUPLICATE --- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- See https://gcc.gnu.org/gcc-4.3/porting_to.html: Name lookup changes GCC by default no longer accepts code such as template <class _Tp> class auto_ptr {}; template <class _Tp> struct counted_ptr { auto_ptr<_Tp> auto_ptr(); }; but will issue the diagnostic error: declaration of 'auto_ptr<_Tp> counted_ptr<_Tp>::auto_ptr()' error: changes meaning of 'auto_ptr' from 'class auto_ptr<_Tp>' The reference to struct auto_ptr needs to be qualified here, or the name of the member function changed to be unambiguous. template <class _Tp> class auto_ptr {}; template <class _Tp> struct counted_ptr { ::auto_ptr<_Tp> auto_ptr(); }; In addition, -fpermissive can be used as a temporary workaround to convert the error into a warning until the code is fixed. Note that then in some case name lookup will not be standard conforming. --- CUT ---- *** This bug has been marked as a duplicate of bug 38764 ***