I'm exploring the possibility to generalise a class of mine that stores some entities. I like it to be able to keep entities of several type, given as template arguments. To explore the possibilities I wrote the following class, that does exactly that. I'm however unsure if anything that I do here is a) save and b) as easy as it gets. I'm not very deep into metaprograming. I'm looking for tips how to improve and pitfalls.#include <iostream>#include <tuple>#include <vector>template<typename... Ts>class A{    template<typename T>    using container = std::vector<T>;public:    template<typename T>    void add(T e) {        std::get<container<T>>(m_tupel).emplace_back(e);    }    template<typename T>    container<T>& get() {        return std::get<container<T>>(m_tupel);    }private:    std::tuple<container<Ts>...> m_tupel;};int main() {     A<int, bool, double, float> a;    a.add(3);    a.add(33);    a.add(3.14);    a.add(333);    a.add(31.4);    const auto& cDouble = a.get<double>();    const auto& cInt = a.get<int>();    for(auto i : cDouble)        std::cout<<i<< ;    std::cout<<\n;    for(auto i : cInt)        std::cout<<i<< ;}
Variadic template class that stores a vector of each type given
c++;collections;template meta programming;c++17;variadic