forked from OSchip/llvm-project
50 lines
914 B
C++
50 lines
914 B
C++
// 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;
|
|
}
|