// { dg-do compile } // Origin: Alexandre Tolmos <ktulu@free.fr> // PR c++/11876: Friend of its own class diagnostics template <typename T> class A { friend class A<int>; friend class A<float>; protected: T _data; inline A() : _data(0) {} template <typename U> inline A(const A<U>& r) : _data(r._data) {} }; class B : public A<int> { public: inline B() {} inline B(const B& r) : A<int>(r) {} }; class C : public A<float> { public: inline C() {} inline C(const B& r) : A<float>(r) {} }; int main(int, char*[]) { B b1, b2(b1); C c(b1); return 0; }