#include <utility>

template<class Container>
class SequenceContainerWrapper
{
   Container cont;
   public:
   using value_type = typename Container::value_type;
   using reference = typename Container::reference;
   using size_type = typename Container::size_type;
   SequenceContainerWrapper(Container init) : cont(std::move(init)) {}
   reference operator[] (size_type n) {return cont[n];}
};

#include <iostream>
#include <vector>
#include <array>

int main()
{
   SequenceContainerWrapper<std::vector<int>> vec({1,2,3,4});
   std::cout << vec[2] << '\n';
   SequenceContainerWrapper<std::array<int, 4>> arr({1,2,3,4});
   std::cout << arr[2] << '\n';
}
