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