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