Author: sebor
Date: Mon Mar 19 15:29:51 2007
New Revision: 520129
URL: http://svn.apache.org/viewvc?view=rev&rev=520129
Log:
2007-03-19 Martin Sebor <[EMAIL PROTECTED]>
STDCXX-300
* _config-xlc.h (_RWSTD_NO_EXPLICIT_INSTANTIATION_BEFORE_DEFINITION,
_RWSTD_NO_EXTERN_TEMPLATE_BEFORE_DEFINITION): Defined for IBM XLC++
8.0 when _RWSTD_NO_INSTANTIATE_DEFAULT_ARGS is also #defined.
Modified:
incubator/stdcxx/trunk/include/rw/_config-xlc.h
Modified: incubator/stdcxx/trunk/include/rw/_config-xlc.h
URL:
http://svn.apache.org/viewvc/incubator/stdcxx/trunk/include/rw/_config-xlc.h?view=diff&rev=520129&r1=520128&r2=520129
==============================================================================
--- incubator/stdcxx/trunk/include/rw/_config-xlc.h (original)
+++ incubator/stdcxx/trunk/include/rw/_config-xlc.h Mon Mar 19 15:29:51 2007
@@ -93,12 +93,30 @@
# endif // REENTRANT && LP64
#endif // AIX
-#if __IBMCPP__ == 800 && !defined (_RWSTDDEBUG)
- // work around an XLC++ 8.0 ICE (STDCXX-159)
-# if defined (_RWSTD_NO_EXTERN_TEMPLATE)
-# define _RWSTD_NO_EXPLICIT_INSTANTIATION
-# endif // _RWSTD_NO_EXTERN_TEMPLATE
-#endif // XLC++ 8.0 without debugging
+#if __IBMCPP__ == 800
+
+# if !defined (__TEMPINC__) && defined (_RWSTD_NO_INSTANTIATE_DEFAULT_ARGS)
+ // disable explicit instantiation directives occuring prior
+ // the definition of out-of-line member functions of class
+ // templates in .cc files (i.e., prior their explicit
+ // #inclusion at the bottom of each header)
+# ifndef _RWSTD_NO_EXPLICIT_INSTANTIATION_BEFORE_DEFINITION
+# define _RWSTD_NO_EXPLICIT_INSTANTIATION_BEFORE_DEFINITION
+# endif
+# ifndef _RWSTD_NO_EXTERN_TEMPLATE_BEFORE_DEFINITION
+# define _RWSTD_NO_EXTERN_TEMPLATE_BEFORE_DEFINITION
+# endif
+# endif // !__TEMPINC__ && _RWSTD_NO_INSTANTIATE_DEFAULT_ARGS
+
+# ifndef _RWSTDDEBUG
+ // work around an XLC++ 8.0 ICE (STDCXX-159)
+# if defined (_RWSTD_NO_EXTERN_TEMPLATE)
+# define _RWSTD_NO_EXPLICIT_INSTANTIATION
+# endif // _RWSTD_NO_EXTERN_TEMPLATE
+# endif // without debugging
+
+#endif // XLC++ 8.0
+
#ifndef __TEMPINC__
// avoid VAC++ 7.0 diagnostic 1540-2910 (I) The template uses