diff options
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/g++.dg/template/abstract-dr337.C | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/friend54.C | 18 |
2 files changed, 20 insertions, 2 deletions
diff --git a/gcc/testsuite/g++.dg/template/abstract-dr337.C b/gcc/testsuite/g++.dg/template/abstract-dr337.C index 4f66c1c1188..6905262d6cb 100644 --- a/gcc/testsuite/g++.dg/template/abstract-dr337.C +++ b/gcc/testsuite/g++.dg/template/abstract-dr337.C @@ -6,8 +6,8 @@ class A { }; template<typename T> -void g(T (*a)[1]) {} // { dg-error "abstract" "" { xfail *-*-* } } +void g(T (*a)[1]) {} // { dg-error "abstract" "" } int main() { - g<A<int> >(0); // { dg-error "no matching function" "" { xfail *-*-* } } + g<A<int> >(0); // { dg-error "no matching function" } } diff --git a/gcc/testsuite/g++.dg/template/friend54.C b/gcc/testsuite/g++.dg/template/friend54.C new file mode 100644 index 00000000000..ead7a72fcc9 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/friend54.C @@ -0,0 +1,18 @@ +// PR c++/56642 + +template <class T> struct A; + +template <class T> +A<T> f(T*) { return A<T>(); } + +template <class T> +struct A +{ + friend A f<T>(T*); +}; + +int main() +{ + int *p = 0; + f(p); +} |