#include <iostream>
#include <iomanip>
using namespace std;
template<class T>
class Array
{
private:
//...
public:
//...
template<typename U>
friend ostream& operator<<(ostream &os, const Array<U> &obj);
};
template<class T>
ostream& operator<<(ostream &os, const Array<T> &obj)
{
//..
cout << __func__ << endl;
return os;
};
int main(int argc, const char * argv[])
{
Array<int> arr;
cout << "arr: " << arr << endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTxjbGFzcyBUPgpjbGFzcyBBcnJheQp7CnByaXZhdGU6CiAgIC8vLi4uCgpwdWJsaWM6CiAgICAvLy4uLgogICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4KICAgIGZyaWVuZCBvc3RyZWFtJiBvcGVyYXRvcjw8KG9zdHJlYW0gJm9zLCBjb25zdCBBcnJheTxVPiAmb2JqKTsKfTsKCnRlbXBsYXRlPGNsYXNzIFQ+Cm9zdHJlYW0mIG9wZXJhdG9yPDwob3N0cmVhbSAmb3MsIGNvbnN0IEFycmF5PFQ+ICZvYmopCnsKICAgIC8vLi4KICAgIGNvdXQgPDwgX19mdW5jX18gPDwgZW5kbDsKICAgIHJldHVybiBvczsKfTsKCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CiAgICBBcnJheTxpbnQ+IGFycjsKCiAgICBjb3V0IDw8ICJhcnI6ICIgPDwgYXJyIDw8IGVuZGw7Cn0KCg==