#include <iostream>
using namespace std;
//prototype the class and the functions
template<class T> class strange;
template<class T> ostream& operator<< (ostream& osObject, const strange<T>& sObject);
//begin class
template <class T>
class strange
{
public:
// .... function prototypes go here.
strange(T x,T y);
friend ostream& operator<< <> (ostream& osObject, const strange<T>& sObject);
private:
T a;
T b;
};
// .... your function definitions go here
template <class T>
strange<T>::strange(T first, T second){
a = first;
b = second;
}
template <class T>
ostream& operator<< (ostream& osObject, const strange<T>& sObject){
osObject << sObject.a << ", " << sObject.b;
return osObject;
}
int main()
{
strange<int> x1(4,6) , x2(12,2) ;
//strange<char> y1('m','n') , y2('m','n') ;
cout << "x1 = " << x1 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy9wcm90b3R5cGUgdGhlIGNsYXNzIGFuZCB0aGUgZnVuY3Rpb25zCnRlbXBsYXRlPGNsYXNzIFQ+IGNsYXNzIHN0cmFuZ2U7CnRlbXBsYXRlPGNsYXNzIFQ+IG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zT2JqZWN0LCBjb25zdCBzdHJhbmdlPFQ+JiBzT2JqZWN0KTsKCgovL2JlZ2luIGNsYXNzCnRlbXBsYXRlIDxjbGFzcyBUPgpjbGFzcyBzdHJhbmdlCnsKICAgIHB1YmxpYzoKICAgICAgICAvLyAuLi4uIGZ1bmN0aW9uIHByb3RvdHlwZXMgZ28gaGVyZS4KICAgICAgICAgICAgc3RyYW5nZShUIHgsVCB5KTsKICAgICAgICAgICAgZnJpZW5kIG9zdHJlYW0mIG9wZXJhdG9yPDwgPD4gKG9zdHJlYW0mIG9zT2JqZWN0LCBjb25zdCBzdHJhbmdlPFQ+JiBzT2JqZWN0KTsKCiAgICBwcml2YXRlOgogICAgVCBhOwogICAgVCBiOwp9OwovLyAuLi4uIHlvdXIgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZ28gaGVyZQp0ZW1wbGF0ZSA8Y2xhc3MgVD4KICAgICAgICBzdHJhbmdlPFQ+OjpzdHJhbmdlKFQgZmlyc3QsIFQgc2Vjb25kKXsKICAgICAgICBhID0gZmlyc3Q7CiAgICAgICAgYiA9IHNlY29uZDsKfQoKdGVtcGxhdGUgPGNsYXNzIFQ+Cm9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zT2JqZWN0LCBjb25zdCBzdHJhbmdlPFQ+JiBzT2JqZWN0KXsKICAgICAgICBvc09iamVjdCA8PCBzT2JqZWN0LmEgPDwgIiwgIiA8PCBzT2JqZWN0LmI7CiAgICAgICAgcmV0dXJuIG9zT2JqZWN0Owp9CgoKCmludCBtYWluKCkKewogICAgc3RyYW5nZTxpbnQ+IHgxKDQsNikgLCB4MigxMiwyKSA7CiAgICAvL3N0cmFuZ2U8Y2hhcj4geTEoJ20nLCduJykgLCB5MignbScsJ24nKSA7CiAgICBjb3V0IDw8ICJ4MSA9ICIgPDwgeDEgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==