diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 2c4b0526f49..f9de9054747 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2003-12-16 Giovanni Bajo + + PR c++/2294 + * name-lookup.c (push_overloaded_decl): always construct an OVERLOAD + if the declaration comes from an using declaration. + 2003-12-15 Mark Mitchell PR c++/10926 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index ec8a63427c6..43c02cf72f3 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -2006,7 +2006,11 @@ push_overloaded_decl (tree decl, int flags) } } - if (old || TREE_CODE (decl) == TEMPLATE_DECL) + if (old || TREE_CODE (decl) == TEMPLATE_DECL + /* If it's a using declaration, we always need to build an OVERLOAD, + because it's the only way to remember that the declaration comes + from 'using', and have the lookup behave correctly. */ + || (flags & PUSH_USING)) { if (old && TREE_CODE (old) != OVERLOAD) new_binding = ovl_cons (decl, ovl_cons (old, NULL_TREE));