| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // RUN: %clang_cc1 -fsyntax-only -verify %s
- template<typename T> struct A {
- struct B { };
-
- friend struct B;
- };
- void f() {
- A<int>::B b;
- }
- struct C0 {
- friend struct A<int>;
- };
- namespace PR6770 {
- namespace N {
- int f1(int);
- }
- using namespace N;
- namespace M {
- float f1(float);
- }
- using M::f1;
- template<typename T> void f1(T, T);
- template <class T>
- void f() {
- friend class f; // expected-error{{'friend' used outside of class}}
- friend class f1; // expected-error{{'friend' used outside of class}}
- }
- }
- namespace friend_redecl_inline {
- // We had a bug where instantiating the foo friend declaration would check the
- // defined-ness of the most recent decl while checking if the canonical decl was
- // inlined.
- void foo();
- void bar();
- template <typename T>
- class C {
- friend void foo();
- friend inline void bar();
- };
- inline void foo() {}
- inline void bar() {}
- C<int> c;
- }
|