#include <iostream>
using namespace std;
class Test2;
class Test1
{
public:
Test1(){}
operator Test2();
};
class Test2
{
public:
Test2(){}
Test1 operator[] (const Test2& test2){ return Test1(); }
friend ostream& operator << (ostream& os, const Test2& test2); // изменение здесь
};
ostream& operator << (ostream& os, const Test2& test2){ return os; } // и здесь
Test1::operator Test2(){ return Test2(); }
int main()
{
Test2 test2_1, test2_2;
cout << test2_1[test2_2] << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFRlc3QyOwoKY2xhc3MgVGVzdDEKewpwdWJsaWM6CglUZXN0MSgpe30KCW9wZXJhdG9yIFRlc3QyKCk7Cn07CgpjbGFzcyBUZXN0Mgp7CnB1YmxpYzoKCVRlc3QyKCl7fQoJVGVzdDEgb3BlcmF0b3JbXSAoY29uc3QgVGVzdDImIHRlc3QyKXsgcmV0dXJuIFRlc3QxKCk7IH0KCWZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvciA8PCAob3N0cmVhbSYgb3MsIGNvbnN0IFRlc3QyJiB0ZXN0Mik7IC8vINC40LfQvNC10L3QtdC90LjQtSDQt9C00LXRgdGMCn07Cgpvc3RyZWFtJiBvcGVyYXRvciA8PCAob3N0cmVhbSYgb3MsIGNvbnN0IFRlc3QyJiB0ZXN0Mil7IHJldHVybiBvczsgfSAvLyDQuCDQt9C00LXRgdGMCgpUZXN0MTo6b3BlcmF0b3IgVGVzdDIoKXsgcmV0dXJuIFRlc3QyKCk7IH0KCmludCBtYWluKCkKewoJVGVzdDIgdGVzdDJfMSwgdGVzdDJfMjsKCWNvdXQgPDwgdGVzdDJfMVt0ZXN0Ml8yXSA8PCBlbmRsOwoJcmV0dXJuIDA7Cn0=