This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [wwwdocs] Remove "New in GCC 3.4.0" from bugs/index.html
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: gcc-patches at gcc dot gnu dot org,Gerald Pfeifer <gerald at pfeifer dot com>
- Date: Sun, 19 Mar 2017 11:01:46 +0100
- Subject: Re: [wwwdocs] Remove "New in GCC 3.4.0" from bugs/index.html
- Authentication-results: sourceware.org; auth=none
- References: <alpine.LNX.2.21.1703190849170.28312@anthias.pfeifer.com>
On March 19, 2017 8:53:16 AM GMT+01:00, Gerald Pfeifer <gerald@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>
>