From 575ed427ddc5ceea4e051295139830d75d8884b0 Mon Sep 17 00:00:00 2001
From: wolf
+ When the next version came (4.0), we found the front-end much
+ improved. However, the real showstopper is that for this code
+
+
+ no code is generated for
+ template <int dim> struct C {
+ void f();
+ };
+
+ template <> void C<1>::f() {};
+
+ C<1>::f
unless the
+ function is used later on in the file. In contrast to
+ non-specialized template functions, this case is also not handled
+ by pgcc's prelinker which would otherwise instantiate missing
+ templates. Since we have many (many many) specializations of
+ member functions in the .cc files in the library, that means that
+ code for these functions is never generated. Consequently, one
+ gets linker errors later on.
+
+ We believe that pgcc's behavior is not in accordance with the + standards, and is also not useful, since it forces the programmer + to put explicit specializations of functions into header files. We + had a long email exchange with Portland Group people in the summer + of 2002, who promised to review the matter. Unfortunately, the + problem still exists in pgcc 4.1 as of June 2003, making pgcc + still unusable to compile deal.II. +
+