pt.c (redeclare_class_template): Merge default template arguments in both directions.

* pt.c (redeclare_class_template): Merge default template
	arguments in both directions.

	* typeck.c (common_type): Undo 1999-08-18 change.  Remove
	compiler_error message.

From-SVN: r28774
This commit is contained in:
Mark Mitchell 1999-08-20 06:11:48 +00:00 committed by Mark Mitchell
parent efe0774e6a
commit 7ce74c5e5e
4 changed files with 18 additions and 6 deletions

View File

@ -1,3 +1,11 @@
1999-08-19 Mark Mitchell <mark@codesourcery.com>
* pt.c (redeclare_class_template): Merge default template
arguments in both directions.
* typeck.c (common_type): Undo 1999-08-18 change. Remove
compiler_error message.
1999-08-19 Jason Merrill <jason@yorick.cygnus.com>
* cp-tree.h: Declare flag_use_repository.

View File

@ -2666,6 +2666,10 @@ redeclare_class_template (type, parms)
/* Update the previous template parameters (which are the ones
that will really count) with the new default value. */
TREE_PURPOSE (TREE_VEC_ELT (tmpl_parms, i)) = parm_default;
else if (tmpl_default != NULL_TREE)
/* Update the new parameters, too; they'll be used as the
parameters for any members. */
TREE_PURPOSE (TREE_VEC_ELT (parms, i)) = tmpl_default;
}
}

View File

@ -698,13 +698,8 @@ common_type (t1, t2)
tt1 = TYPE_MAIN_VARIANT (tt1);
tt2 = TYPE_MAIN_VARIANT (tt2);
if (same_type_p (tt1, tt2))
if (tt1 == tt2)
target = tt1;
else if (b1)
{
compiler_error ("common_type called with uncommon member types");
target = tt1;
}
else if (tt1 == void_type_node || tt2 == void_type_node)
target = void_type_node;
else if (tt1 == unknown_type_node)

View File

@ -0,0 +1,5 @@
// Build don't link:
// Origin: Jason Merrill <jason@cygnus.com>
template <class T, class U = int> struct A;
template <class T = int, class U> struct A { };