I'm evaluating my options to structure an in-memory database and I have a few ideas of how to implement it. I would like to know your opinion of what the best design choice is.I have a column class which is parametrized to represent different column types. template<typename T>class Column<T> {public:   std::string name();   T sum();   T avg();   ...private:   std::string name;   std::vector<T> vec;   ...};I'm not too sure what the best route to store a vector of Column with different type parameters. For example a 3-column table might have one integer column, float column and string column. I know there is boost::variant but I'm not allowed to use boost.I was thinking of using one of the following:Tagged UnionPure OO: Extend the column like IntColumn : Column, etc.What are your thoughts? Got a better idea?
Designing an in-memory table in C++
c++;c++11