#include <iostream>
#include <vector>
#include <tuple>
template <typename T>
using Container = std::vector<T>;
template<typename... Ts>
class Mgr2
{
private:
std::tuple<Container<Ts>...> _containers;
public:
Mgr2() {};
template <typename T>
const Container<T>& get() const { return std::get<Container<T>>(_containers); }
template <typename T>
Container<T>& get() { return std::get<Container<T>>(_containers); }
};
int main()
{
Mgr2<int, float> mgr;
mgr.get<int>() = {4, 8, 15, 16, 23, 42};
mgr.get<float>().push_back(4.2f);
for (const auto e : mgr.get<int>()) {
std::cout << " " << e;
}
std::cout << std::endl;
for (const auto f : mgr.get<float>()) {
std::cout << " " << f;
}
std::cout << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8dHVwbGU+Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KdXNpbmcgQ29udGFpbmVyID0gc3RkOjp2ZWN0b3I8VD47Cgp0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBUcz4KY2xhc3MgTWdyMgp7CnByaXZhdGU6CiAgICBzdGQ6OnR1cGxlPENvbnRhaW5lcjxUcz4uLi4+IF9jb250YWluZXJzOwpwdWJsaWM6CiAgICBNZ3IyKCkge307CgogICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KICAgY29uc3QgQ29udGFpbmVyPFQ+JiBnZXQoKSBjb25zdCB7IHJldHVybiBzdGQ6OmdldDxDb250YWluZXI8VD4+KF9jb250YWluZXJzKTsgfQoKICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiAgIENvbnRhaW5lcjxUPiYgZ2V0KCkgeyByZXR1cm4gc3RkOjpnZXQ8Q29udGFpbmVyPFQ+PihfY29udGFpbmVycyk7IH0KfTsKCmludCBtYWluKCkKewogICAgTWdyMjxpbnQsIGZsb2F0PiBtZ3I7CiAgICAKICAgIG1nci5nZXQ8aW50PigpID0gezQsIDgsIDE1LCAxNiwgMjMsIDQyfTsKICAgIG1nci5nZXQ8ZmxvYXQ+KCkucHVzaF9iYWNrKDQuMmYpOwogICAgCiAgICBmb3IgKGNvbnN0IGF1dG8gZSA6IG1nci5nZXQ8aW50PigpKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICIgIiA8PCBlOwogICAgfQogICAgc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKICAgIGZvciAoY29uc3QgYXV0byBmIDogbWdyLmdldDxmbG9hdD4oKSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiICIgPDwgZjsKICAgIH0KICAgIHN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7Cn0K