+2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
+
+ * pt.c (unify): Don't check cv quals of array types.
+
2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
* tree.c (cp_build_qualified_type_real): Use CP_TYPE_QUALS to
cv-qualification mismatches. */
if (TREE_CODE (arg) == TREE_CODE (parm)
&& TYPE_P (arg)
+ /* It is the elements of the array which hold the cv quals of an array
+ type, and the elements might be template type parms. We'll check
+ when we recurse. */
+ && TREE_CODE (arg) != ARRAY_TYPE
/* We check the cv-qualifiers when unifying with template type
parameters below. We want to allow ARG `const T' to unify with
PARM `T' for example, when computing which of two templates
+2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.old-deja/g++.pt/deduct6.C: New test.
+
2001-02-14 Nathan Sidwell <nathan@codesourcery.com>
* g++.old-deja/g++.pt/deduct5.C: New test.
--- /dev/null
+// Build don't link:
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 13 Feb 2001 <nathan@codesourcery.com>
+
+// Bug 1962. We were not dealing with qualified array types properly.
+
+#include <stdio.h>
+
+template <typename T, unsigned I> int Baz (T (&obj)[I])
+{
+ printf ("%s\n", __PRETTY_FUNCTION__);
+ return 1;
+}
+
+int main ()
+{
+ static int const ca[1] = {1};
+ static int a[1] = {1};
+
+ Baz (ca);
+ Baz (a);
+
+ return 0;
+}