diff options
author | Nathan Sidwell <nathan@codesourcery.com> | 2002-09-30 19:33:06 +0000 |
---|---|---|
committer | Nathan Sidwell <nathan@gcc.gnu.org> | 2002-09-30 19:33:06 +0000 |
commit | 5a9a196102ff0d1bf27831e0ce396049cc334db8 (patch) | |
tree | d1b0e26175f544e3bcc5c964303ca75c1a2cdef0 /gcc | |
parent | 7befdb9fca2b38967408c54b4f2179f1f25875ae (diff) | |
download | gcc-5a9a196102ff0d1bf27831e0ce396049cc334db8.zip gcc-5a9a196102ff0d1bf27831e0ce396049cc334db8.tar.gz gcc-5a9a196102ff0d1bf27831e0ce396049cc334db8.tar.bz2 |
tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also overloaded.
cp:
* tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also
overloaded.
testsuite:
* g++.dg/overload/member1.C: New test.
From-SVN: r57662
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/tree.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/overload/member1.C | 22 |
4 files changed, 35 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c3690f3..e6ea3fe 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2002-09-30 Nathan Sidwell <nathan@codesourcery.com> + + * tree.c (really_overloaded_fn): TEMPLATE_ID_EXPRs are also + overloaded. + 2002-09-30 Steve Ellcey <sje@cup.hp.com> * class.c (build_vtbl_initializer): Add cast. diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index 588b710..4b1142b 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -1012,9 +1012,10 @@ really_overloaded_fn (x) x = TREE_OPERAND (x, 1); if (BASELINK_P (x)) x = BASELINK_FUNCTIONS (x); - return (TREE_CODE (x) == OVERLOAD - && (OVL_CHAIN (x) - || DECL_FUNCTION_TEMPLATE_P (OVL_FUNCTION (x)))); + + return ((TREE_CODE (x) == OVERLOAD && OVL_CHAIN (x)) + || DECL_FUNCTION_TEMPLATE_P (OVL_CURRENT (x)) + || TREE_CODE (x) == TEMPLATE_ID_EXPR); } /* Return the OVERLOAD or FUNCTION_DECL inside FNS. FNS can be an diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d444eea..2a84ea8 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2002-09-30 Nathan Sidwell <nathan@codesourcery.com> + + * g++.dg/overload/member1.C: New test. + 2002-09-30 Mark Mitchell <mark@codesourcery.com> * g++.dg/abi/empty7.C: New test. diff --git a/gcc/testsuite/g++.dg/overload/member1.C b/gcc/testsuite/g++.dg/overload/member1.C new file mode 100644 index 0000000..29896a5 --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/member1.C @@ -0,0 +1,22 @@ +// { dg-do compile } + +// Copyright (C) 2002 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 29 Sep 2002 <nathan@codesourcery.com> + +struct X +{ + template<typename T> static void ProcessProxy (); + typedef void (*Callback) (); + void Process (Callback); + + template<typename T> void Process () + { + Process (&ProcessProxy<T>); + } + +}; + +void foo (X *x) +{ + x->Process<int> (); +} |