#include <iostream>

using namespace std;

class Integers
{
public:
	Integers(int* values) { _values = values; }
	~Integers() { delete[] _values; };

	const int& operator[](size_t index) const
	{
		return _values[index];
	}
	
	operator const int*() const
	{
		return _values;
	}
	
private:
	int& operator[](size_t index)
	{
		return _values[index];
	}
	
	operator int*() const
	{
		return _values;
	}
	
	int* _values;
};

int main()
{
	int* values = new int[5] { 0, 1, 2, 3, 4 };
	Integers ints(values);
	const int& i = ints[2];
	printf("int: %d", i);
	return 0;
}