#include <vector>
#include <initializer_list>
#include <iostream>
using namespace std;

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(initializer_list<value_type> init) : cont(init) {}
  reference operator[] (size_type n) {return cont[n];}
  // lots of other code that does nothing but wrapping
};

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