#include <iostream>
#include <cstddef>
using std::size_t;
class myArr
{
public:
const int & operator [] (size_t _idx) const{ return arr[_idx]; } // (1)
int & operator [] (size_t _idx){ return arr[_idx]; } // (2)
const size_t size() const { return MAXSIZE; }
private:
static constexpr size_t MAXSIZE = 10;
int arr[MAXSIZE] = {};
};
using std::cout;
using std::endl;
int main()
{
myArr arr1;
for(size_t i = 0; i<arr1.size(); i+=1)
arr1[i] = i; // call (2)
for(size_t i = 0; i<arr1.size(); i+=1)
cout << arr1[i] << " "; // call(2)
cout << endl;
const myArr arr2 = arr1;
for(size_t i = 0; i<arr2.size(); i+=1)
cout << arr2[i] << " "; // call (1)
cout << endl;
return 0;
}
