On Sat, 21 Nov 2015, Jonathan Wakely wrote: > I forgot to respond to this, and never committed the patch, sorry. > > I've committed the changes to htdocs/projects/cxx0x.html now, but > not the htdocs/bugs/index.html change.
I wasn't opposed to the bugs/index.html change, mind. Only wondering about the 3.x info. > I agree that the 3.x info is not useful on that page. Maybe we should > just drop the whole "Common problems when upgrading the compiler" > section, because info on 3.x is outdated, nearly everybody understands > that C++ compilers conform to the standard these days (even MS got in > on that act eventually ;-) and the info about breaking the C++ ABI with > every major release is just wrong! Version-specific changes like the ones described here, and how to cope with them, are usually covered in gcc-*/porting_to.html these days, perhaps we should add pointers from bugs.html? I agree with your thoughts and went ahead and made a first set of changes along these lines (patch below). Absolutely go ahead and trim (or remove) this further. There is also a section about "C++ non-bugs" where I am not sure the current contents still makes a lot of sense? Gerald Index: index.html =================================================================== RCS file: /cvs/gcc/wwwdocs/htdocs/bugs/index.html,v retrieving revision 1.117 diff -u -r1.117 index.html --- index.html 8 Oct 2015 15:06:00 -0000 1.117 +++ index.html 21 Nov 2015 15:40:43 -0000 @@ -688,8 +688,7 @@ <h4>Standard conformance</h4> <p>With each release, we try to make G++ conform closer to the <a href= -"http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ standard</a>. -We have also implemented some of the core and library defect reports.</p> +"http://www.open-std.org/jtc1/sc22/wg21/">ISO C++ standard</a>.</p> <p>Non-conforming legacy code that worked with older versions of GCC may be rejected by more recent compilers. There is no command-line switch to ensure @@ -698,58 +697,6 @@ However, some non-conforming constructs are allowed when the command-line option <code>-fpermissive</code> is used.</p> -<p>Two milestones in standard conformance are GCC 3.0 (including a major -overhaul of the standard library) and the 3.4.0 version (with its new C++ -parser).</p> - -<h4>New in GCC 3.0</h4> - -<ul> - -<li>The standard library is much more conformant, and uses the -<code>std::</code> namespace (which is now a real namespace, not an -alias for <code>::</code>).</li> - -<li>The standard header files for the c library don't end with -<code>.h</code>, but begin with <code>c</code> (i.e. -<code><cstdlib></code> rather than <code><stdlib.h></code>). -The <code>.h</code> names are still available, but are deprecated.</li> - -<li><code><strstream></code> is deprecated, use -<code><sstream></code> instead.</li> - -<li><code>streambuf::seekoff</code> & -<code>streambuf::seekpos</code> are private, instead use -<code>streambuf::pubseekoff</code> & -<code>streambuf::pubseekpos</code> respectively.</li> - -<li>If <code>std::operator << (std::ostream &, long long)</code> -doesn't exist, you need to recompile libstdc++ with -<code>--enable-long-long</code>.</li> - -</ul> - -<p>If you get lots of errors about things like <code>cout</code> not being -found, you've most likely forgotten to tell the compiler to look in the -<code>std::</code> namespace. There are several ways to do this:</p> - -<ul> - -<li>Say <code>std::cout</code> at the call. This is the most explicit -way of saying what you mean.</li> - -<li>Say <code>using std::cout;</code> somewhere before the call. You -will need to do this for each function or type you wish to use from the -standard library.</li> - -<li>Say <code>using namespace std;</code> somewhere before the call. -This is the quick-but-dirty fix. This brings the <em>whole</em> of the -<code>std::</code> namespace into scope. <em>Never</em> do this in a -header file, as every user of your header file will be affected by this -decision.</li> - -</ul> - <h4><a name="new34">New in GCC 3.4.0</a></h4> <p>The new parser brings a lot of improvements, especially concerning