#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';
}
I2luY2x1ZGUgPHV0aWxpdHk+Cgp0ZW1wbGF0ZTxjbGFzcyBDb250YWluZXI+CmNsYXNzIFNlcXVlbmNlQ29udGFpbmVyV3JhcHBlcgp7CiAgIENvbnRhaW5lciBjb250OwogICBwdWJsaWM6CiAgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU7CiAgIHVzaW5nIHJlZmVyZW5jZSA9IHR5cGVuYW1lIENvbnRhaW5lcjo6cmVmZXJlbmNlOwogICB1c2luZyBzaXplX3R5cGUgPSB0eXBlbmFtZSBDb250YWluZXI6OnNpemVfdHlwZTsKICAgU2VxdWVuY2VDb250YWluZXJXcmFwcGVyKENvbnRhaW5lciBpbml0KSA6IGNvbnQoc3RkOjptb3ZlKGluaXQpKSB7fQogICByZWZlcmVuY2Ugb3BlcmF0b3JbXSAoc2l6ZV90eXBlIG4pIHtyZXR1cm4gY29udFtuXTt9Cn07CgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxhcnJheT4KCmludCBtYWluKCkKewogICBTZXF1ZW5jZUNvbnRhaW5lcldyYXBwZXI8c3RkOjp2ZWN0b3I8aW50Pj4gdmVjKHsxLDIsMyw0fSk7CiAgIHN0ZDo6Y291dCA8PCB2ZWNbMl0gPDwgJ1xuJzsKICAgU2VxdWVuY2VDb250YWluZXJXcmFwcGVyPHN0ZDo6YXJyYXk8aW50LCA0Pj4gYXJyKHsxLDIsMyw0fSk7CiAgIHN0ZDo6Y291dCA8PCBhcnJbMl0gPDwgJ1xuJzsKfQo=