+2000-08-11 Theodore Papadopoulo <Theodore.Papadopoulo@sophia.inria.fr>
+
+ * decl2.c (add_function): Reorganize.
+ (arg_assoc): Do not consider function template decls.
+
2000-08-11 Jason Merrill <jason@redhat.com>
* decl.c (lookup_name_real): Don't forget the TYPENAME_TYPE we're
case. */
/* We must find only functions, or exactly one non-function. */
- if (k->functions && is_overloaded_fn (k->functions)
- && is_overloaded_fn (fn))
+ if (!k->functions)
+ k->functions = fn;
+ else if (is_overloaded_fn (k->functions) && is_overloaded_fn (fn))
k->functions = build_overload (fn, k->functions);
- else if (k->functions)
+ else
{
tree f1 = OVL_CURRENT (k->functions);
tree f2 = fn;
cp_error (" in call to `%D'", k->name);
return 1;
}
- else
- k->functions = fn;
+
return 0;
}
{
my_friendly_assert (TREE_CODE (n) == OVERLOAD, 980715);
- for (; n; n = OVL_CHAIN (n))
- if (arg_assoc_type (k, TREE_TYPE (OVL_FUNCTION (n))))
- return 1;
+ for (; n; n = OVL_CHAIN (n))
+ {
+ /* Do not consider function template decls during Koenig lookup. */
+
+ tree fn = OVL_FUNCTION (n);
+ if (!DECL_FUNCTION_TEMPLATE_P (fn)
+ && arg_assoc_type (k, TREE_TYPE (fn)))
+ return 1;
+ }
}
return 0;
--- /dev/null
+// Build don't link:
+
+// Copyright (C) 2000 Free Software Foundation, Inc.
+// Contributed by Theodore.Papadopoulo 23 Jun 2000 <Theodore.Papadopoulo@sophia.inria.fr>
+
+#include <algorithm>
+
+void foo(const char*,...);
+
+inline void
+bar() {
+ foo("",count); // ERROR - multiple overloaded count functions
+}