diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/overload/member2.C')
-rw-r--r-- | gcc/testsuite/g++.dg/overload/member2.C | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/overload/member2.C b/gcc/testsuite/g++.dg/overload/member2.C new file mode 100644 index 000000000..b8914146f --- /dev/null +++ b/gcc/testsuite/g++.dg/overload/member2.C @@ -0,0 +1,41 @@ +// { dg-do run } + +// Copyright (C) 2001 Free Software Foundation, Inc. +// Contributed by Nathan Sidwell 17 Oct 2002 <nathan@codesourcery.com> + +// PR 7676. We didn't notice template members were different. + +struct foo +{ + template<class T> + int bar() {return 1;} + + template<int I> + int bar() {return 2;} + +}; + +struct baz : foo +{ + using foo::bar; + template<int I> + int bar () {return 3;} +}; + +int main () +{ + baz b; + foo f; + + if (f.bar<1> () != 2) + return 1; + if (f.bar<int> () != 1) + return 2; + + if (b.bar<1> () != 3) + return 1; + if (b.bar<int> () != 1) + return 2; + + return 0; +} |