--- libsigc++-2.0.17.orig/sigc++/macros/signal.h.m4	2005-12-20 02:34:30.000000000 -0600
+++ libsigc++-2.0.17/sigc++/macros/signal.h.m4	2007-03-04 00:42:11.860291000 -0600
@@ -480,10 +480,17 @@
 // TODO: This should have its own test, but I can not create one that gives the error instead of just a warning. murrayc.
 // I have just used this because there is a correlation between these two problems.
 #ifdef SIGC_TEMPLATE_SPECIALIZATION_OPERATOR_OVERLOAD
-  //Compilers, such as older versions of SUN Forte C++, that do not allow this also often
-  //do not allow a typedef to have the same name as a class in the typedef's definition.
-  //For Sun Forte CC 5.7 (SUN Workshop 10), comment this out to fix the build.
-  #define SIGC_TYPEDEF_REDEFINE_ALLOWED 1
+  //Compilers, such as older versions of SUN Forte C++, that do not allow
+  //this also often do not allow a typedef to have the same name as a
+  //class in the typedef's definition.
+  //Sun Forte CC 5.7 and later (Workshop 10+) should not have this defined.
+# if defined(__sun) && defined(__SUNPRO_CC)
+#  if __SUNPRO_CC < 0x570
+#  define SIGC_TYPEDEF_REDEFINE_ALLOWED 1
+#  endif
+# elif /* Not Solaris or Solaris and not Workshop */
+#  define SIGC_TYPEDEF_REDEFINE_ALLOWED 1
+# endif
 #endif
 
 namespace sigc {
