1// { dg-do compile }
2
3// Origin: Alexandre Tolmos <ktulu@free.fr>
4
5// PR c++/11876: Friend of its own class diagnostics
6
7template <typename T>
8class A
9{
10	friend class A<int>;
11	friend class A<float>;
12protected:
13	T _data;
14	inline A() : _data(0) {}
15	template <typename U>
16	inline A(const A<U>& r) : _data(r._data) {}
17};
18
19class B : public A<int>
20{
21public:
22	inline B() {}
23	inline B(const B& r) : A<int>(r) {}
24};
25
26class C : public A<float>
27{
28public:
29	inline C() {}
30	inline C(const B& r) : A<float>(r) {}
31};
32
33int main(int, char*[])
34{
35	B b1, b2(b1);
36	C c(b1);
37	return 0;
38}
39