#include <iostream>
#include <algorithm>

struct myarray
{
    myarray(unsigned size) : _size(size), _array(new int[_size]()) {}

    unsigned size() const { return _size; }
    int& operator[](unsigned index) { return _array[index]; }
    int operator[](unsigned index) const { return _array[index]; }

    operator int*() {return _array;}
    operator const int*() const { return _array; }

    myarray(const myarray&) = delete;
    void operator=(const myarray&) = delete;

private:
    unsigned _size;
    int* _array;
};

void mysort(int* arr, unsigned sz) { std::sort(arr, arr + sz); }
void mysort(myarray& arr) { return mysort(arr, arr.size()); }

void display(const myarray& arr)
{
    for (unsigned i = 0; i < arr.size(); ++i)
        std::cout << arr[i] << '\n';
    std::cout << '\n';
}

int main()
{
    myarray arr(10);
    for (unsigned i = 0; i < arr.size(); ++i)
        arr[i] = arr.size() - i;

    display(arr);
    mysort(arr);
    display(arr);
}
