#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';
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGluaXRpYWxpemVyX2xpc3Q+CiNpbmNsdWRlIDxpb3N0cmVhbT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPGNsYXNzIENvbnRhaW5lcj4KY2xhc3MgU2VxdWVuY2VDb250YWluZXJXcmFwcGVyCnsKICBDb250YWluZXIgY29udDsKcHVibGljOgogIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU7CiAgdXNpbmcgcmVmZXJlbmNlID0gdHlwZW5hbWUgQ29udGFpbmVyOjpyZWZlcmVuY2U7CiAgdXNpbmcgc2l6ZV90eXBlID0gdHlwZW5hbWUgQ29udGFpbmVyOjpzaXplX3R5cGU7CiAgU2VxdWVuY2VDb250YWluZXJXcmFwcGVyKGluaXRpYWxpemVyX2xpc3Q8dmFsdWVfdHlwZT4gaW5pdCkgOiBjb250KGluaXQpIHt9CiAgcmVmZXJlbmNlIG9wZXJhdG9yW10gKHNpemVfdHlwZSBuKSB7cmV0dXJuIGNvbnRbbl07fQogIC8vIGxvdHMgb2Ygb3RoZXIgY29kZSB0aGF0IGRvZXMgbm90aGluZyBidXQgd3JhcHBpbmcKfTsKCmludCBtYWluKCkKewoJU2VxdWVuY2VDb250YWluZXJXcmFwcGVyPHZlY3RvcjxpbnQ+PiB2ZWMoezEsMiwzLDR9KTsKCWNvdXQgPDwgdmVjWzJdIDw8ICdcbic7Cn0=