template <typename type>
class Array
{
friend ostream& operator<<(ostream& output, const Array<type> right)
{
for (int i = 0; i < right.dim; i++)
output << right[i] << space;
}
friend istream& operator>>(istream& input, Array<type>& right)
{
for (int i = 0; i < right.dim; i++)
input >> right[i];
}
public:
Array();
explicit Array(const Array<type>&);
~Array();
const Array<type> operator=(const Array<type>&);
bool operator==(const Array<type>&) const;
bool operator!=(const Array<type>& compare) const
{
return !(*this == compare);
}
type& operator[](size_t);
type operator[](size_t) const;
size_t size() const;
void push(type);
type pop();
bool fill(size_t, type);
private:
size_t dim;
type *ptr;
};