diff options
Diffstat (limited to 'test/SemaCXX/friend.cpp')
-rw-r--r-- | test/SemaCXX/friend.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/test/SemaCXX/friend.cpp b/test/SemaCXX/friend.cpp index a8e20439419fd..4f27f4df6c907 100644 --- a/test/SemaCXX/friend.cpp +++ b/test/SemaCXX/friend.cpp @@ -147,11 +147,13 @@ namespace test8 { } using ns2::f; // expected-note {{using declaration}} } - struct A { void f(); }; // expected-note {{target of using declaration}} + struct A { void f(); }; // expected-note 2{{target of using declaration}} struct B : public A { using A::f; }; // expected-note {{using declaration}} + template<typename T> struct C : A { using A::f; }; // expected-note {{using declaration}} struct X { template<class T> friend void ns1::f(T t); // expected-error {{cannot befriend target of using declaration}} friend void B::f(); // expected-error {{cannot befriend target of using declaration}} + friend void C<int>::f(); // expected-error {{cannot befriend target of using declaration}} }; } @@ -363,3 +365,17 @@ void g_pr6954() { f_pr6954(5); // expected-error{{undeclared identifier 'f_pr6954'}} } +namespace tag_redecl { + namespace N { + struct X *p; + namespace { + class K { + friend struct X; + }; + } + } + namespace N { + struct X; + X *q = p; + } +} |