#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;
}

