-Wed Sep 3 09:55:09 1997 Klaus Espenlaub (kespenla@student.informatik.uni-ulm.de)
+Wed Sep 3 11:09:25 1997 Jason Merrill <jason@yorick.cygnus.com>
+
+ * pt.c (type_unification): If strict and the function parm doesn't
+ use template parms, just compare types.
+
+Wed Sep 3 10:35:49 1997 Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>
* method.c (build_overloaded_value): Replace direct call
to the floating point emulator with REAL_VALUE_TO_DECIMAL macro.
Mon Sep 1 13:19:04 1997 Jason Merrill <jason@yorick.cygnus.com>
+ * call.c (add_builtin_candidate): Add missing TREE_TYPE.
+ (compare_ics): Likewise.
+ From someone whose name I've lost (sorry).
+
+ * call.c (joust): Warn about choosing one conversion op over
+ another because of 'this' argument when the other return type is
+ better.
+ (source_type): New fn.
+
* call.c (build_new_op): Strip leading REF_BIND from first operand
to builtin operator.
if (arg == unknown_type_node)
return 1;
- if (! uses_template_parms (parm)
- && TREE_CODE_CLASS (TREE_CODE (arg)) != 't')
+ /* Conversions will be performed on a function argument that
+ corresponds with a function parameter that contains only
+ non-deducible template parameters and explicitly specified
+ template parameters. */
+ if (! uses_template_parms (parm))
{
- if (can_convert_arg (parm, TREE_TYPE (arg), arg))
- continue;
+ tree type;
+
+ if (TREE_CODE_CLASS (TREE_CODE (arg)) != 't')
+ type = TREE_TYPE (arg);
+ else
+ {
+ type = arg;
+ arg = NULL_TREE;
+ }
+
+ if (strict)
+ {
+ if (comptypes (parm, type, 1))
+ continue;
+ }
+ else if (arg)
+ {
+ if (can_convert_arg (parm, type, arg))
+ continue;
+ }
+ else
+ {
+ if (can_convert (parm, type))
+ continue;
+ }
+
return 1;
}