RedHat from a snapshot somewhere between 2.95 and 3.0; it contained a large
number of compiler bugs, which have partly been fixed, but too many remain as
that we were able to make the library work with this compiler until we could
- get hold of such a system (the main development was done in Germany, which is
- SuSE country, not Red Hat). Also note that version 2.96 is not an officially
- released version of gcc. Simply use either gcc 2.95 or 3.X.
+ get hold of such a system (initially, the main development of
+ <acronym>deal.II</acronym> was done in Germany, which is SuSE country, not
+ Red Hat). Also note that version 2.96 is not an officially
+ released version of gcc. Simply use either gcc 2.95 or 3.X. Also note that we
+ have reports that gcc 2.96 may miscompile parts of the library, see
+ <a href="http://www.dealii.org/mail/msg00837.html" target="body">this
+ message</a>.
</p>
<p>
compiler, so the problem does not exist there any more.
</p>
+ <p>
+ However, there are more problems lurking around the corner: even though we
+ have included patches so that the library can be compiled, presently not all
+ of the examples can. There is at least one problem in the compiler which we
+ could not work around (I reported this to the gcc bug tracking system as
+ c++/616 in October 2000, and it was fixed a few weeks later, but apparently
+ did not make it to Red Hat's version). The problem manifests itself in
+ situations like this:
+ <code>
+ <pre>
+ template <int dim> struct Function {};
+ template <int dim> struct RHS : Function<dim> { RHS() {}; };
+
+ template <int dim> void f () {
+ const RHS<dim> rhs;
+ };
+ template void f<1> ();
+ </pre>
+ </code>
+ Here, the compiler reports
+ <code>
+ <pre>
+ x.cc: In function `void f () [with int dim = 1]':
+ x.cc:7: instantiated from here
+ x.cc:5: uninitialized const `rhs'
+ </pre>
+ </code>
+ which is clearly bogus since <code>rhs</code> uses the default constructor of
+ the class. Unfortunately, there is no way of working around the bug short of
+ removing the constness of the variable. We did not want to do this, since
+ this changes the semantics of the programs and is promoting bad style which
+ we do not want to do in example programs. Furthermore, since gcc 2.96 is
+ being phased out at the time of this writing, there is no point in doing this
+ any more. Therefore, we advise you to remove the constness of these variables
+ if you are forced to use this compiler and want to use the example programs,
+ and want to test the example programs or use them as the basis for your own
+ project. A better way is to up- or downgrade your compiler, if this is
+ possible for your machine.
+ </p>
+
<a name="windows">
<h3>Can I use <acronym>deal.II</acronym> on a