On March 19, 2017 8:53:16 AM GMT+01:00, Gerald Pfeifer <ger...@pfeifer.com> wrote: >GCC 3.4.0 dates back to 2004, and by now everyone really should >have updated their stuff to newer G++ / C++ standards. ;-)
Maybe this place is a good one to refer to the various porting_to.HTML pages we have that list similar issues? Richard. >Committed. > >Gerald > >Index: bugs/index.html >=================================================================== >RCS file: /cvs/gcc/wwwdocs/htdocs/bugs/index.html,v >retrieving revision 1.118 >diff -u -r1.118 index.html >--- bugs/index.html 21 Nov 2015 15:41:17 -0000 1.118 >+++ bugs/index.html 19 Mar 2017 07:49:15 -0000 >@@ -697,78 +697,7 @@ >However, some non-conforming constructs are allowed when the >command-line > option <code>-fpermissive</code> is used.</p> > >-<h4><a name="new34">New in GCC 3.4.0</a></h4> >- >-<p>The new parser brings a lot of improvements, especially concerning >-name-lookup.</p> >- >-<ul> >- >-<li>The "implicit typename" extension got removed (it was already >deprecated >-since GCC 3.1), so that the following code is now rejected, see >[14.6]: >-<blockquote><pre> >-template <typename> struct A >-{ >- typedef int X; >-}; >- >-template <typename T> struct B >-{ >- A<T>::X x; // error >- typename A<T>::X y; // OK >-}; >- >-B<void> b; >-</pre></blockquote></li> >- >-<li>For similar reasons, the following code now requires the >-<code>template</code> keyword, see [14.2]: >-<blockquote><pre> >-template <typename> struct A >-{ >- template <int> struct X {}; >-}; >- >-template <typename T> struct B >-{ >- typename A<T>::X<0> x; // error >- typename A<T>::template X<0> y; // OK >-}; >- >-B<void> b; >-</pre></blockquote></li> >- >-<li>We now have two-stage name-lookup, so that the following code is >-rejected, see [14.6]/9: >-<blockquote><pre> >-template <typename T> int foo() >-{ >- return i; // error >-} >-</pre></blockquote></li> >- >-<li>This also affects members of base classes, see [14.6.2]: >-<blockquote><pre> >-template <typename> struct A >-{ >- int i, j; >-}; >- >-template <typename T> struct B : A<T> >-{ >- int foo1() { return i; } // error >- int foo2() { return this->i; } // OK >- int foo3() { return B<T>::i; } // OK >- int foo4() { return A<T>::i; } // OK >- >- using A<T>::j; >- int foo5() { return j; } // OK >-}; >-</pre></blockquote></li> >- >-</ul> >- >-<p>In addition to the problems listed above, the manual contains a >section on >+<p>The manual contains a section on ><a >href="https://gcc.gnu.org/onlinedocs/gcc/C_002b_002b-Misunderstandings.html"> > Common Misunderstandings with GNU C++</a>.</p> >