gen-num-limits.cc (INSTANTIATIONS): New macro.
authorMark Mitchell <mark@codesourcery.com>
Wed, 17 Jan 2001 07:13:39 +0000 (07:13 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Wed, 17 Jan 2001 07:13:39 +0000 (07:13 +0000)
* src/gen-num-limits.cc (INSTANTIATIONS): New macro.
Use it do explicitly instantiate predicate<T> and value<T> for
all the builtin Ts.

From-SVN: r39086

libstdc++-v3/ChangeLog
libstdc++-v3/src/gen-num-limits.cc

index 6e5468b..4e28ed0 100644 (file)
@@ -1,3 +1,9 @@
+2001-01-16  Mark Mitchell  <mark@codesourcery.com>
+
+       * src/gen-num-limits.cc (INSTANTIATIONS): New macro.
+       Use it do explicitly instantiate predicate<T> and value<T> for
+       all the builtin Ts.
+
 2001-01-16  Nathan Sidwell  <nathan@codesourcery.com>
 
        * libsupc++/exception_support.cc (__cp_pop_exception): Fix
index 8106c90..aca1c84 100644 (file)
@@ -770,3 +770,28 @@ int main()
     // .__convert_long_double_d); }
 }
 
+// G++ doesn't have support for automatic instantiation of static data
+// members on platforms that don't have weak symbols.  On AIX, in
+// particular, static data members must be explicitly instantiated.
+// So, we explicitly instantiate some of the ones we need.  To save
+// typing, we don't name the static data members explicitly; we
+// instead name their containing types.
+
+#define INSTANTIATIONS(TYPE)                   \
+  template struct predicate<TYPE>;             \
+  template struct value<TYPE>
+
+INSTANTIATIONS (bool);
+INSTANTIATIONS (char);
+INSTANTIATIONS (signed char);
+INSTANTIATIONS (unsigned char);
+INSTANTIATIONS (short);
+INSTANTIATIONS (unsigned short);
+INSTANTIATIONS (int);
+INSTANTIATIONS (unsigned int);
+INSTANTIATIONS (long);
+INSTANTIATIONS (unsigned long);
+INSTANTIATIONS (float);
+INSTANTIATIONS (double);
+INSTANTIATIONS (long double);
+