1*0333dd95SReid Kleckner class C1 { 2*0333dd95SReid Kleckner public: 3*0333dd95SReid Kleckner C1(); 4*0333dd95SReid Kleckner ~C1(); method_1()5*0333dd95SReid Kleckner C1 *method_1() { 6*0333dd95SReid Kleckner return this; 7*0333dd95SReid Kleckner } method_2()8*0333dd95SReid Kleckner C1 method_2() { 9*0333dd95SReid Kleckner return C1(); 10*0333dd95SReid Kleckner } method_3()11*0333dd95SReid Kleckner void method_3() { 12*0333dd95SReid Kleckner const C1 &ref = C1(); 13*0333dd95SReid Kleckner } 14*0333dd95SReid Kleckner }; 15*0333dd95SReid Kleckner 16*0333dd95SReid Kleckner class C11 : public C1 { 17*0333dd95SReid Kleckner }; 18*0333dd95SReid Kleckner 19*0333dd95SReid Kleckner class C2 { 20*0333dd95SReid Kleckner private: 21*0333dd95SReid Kleckner int x; 22*0333dd95SReid Kleckner friend class C3; 23*0333dd95SReid Kleckner public: 24*0333dd95SReid Kleckner static_assert(sizeof(x) == sizeof(int), "Error"); 25*0333dd95SReid Kleckner typedef class C2::C2 InjType; 26*0333dd95SReid Kleckner }; 27