И это всё МОЁ

Есть два enum для двух очень похожих, но не пересекающихся категорий.

И стандартные map’ы где хранятся элементы:


struct Entity {
const int v1;
int v2;
/* дальше кучка методов с формулами */
};
enum class First { ... };
enum class Second { ... };
std::map<First, Entity> FirstMap;
std::map<Second, Entity> SecondMap;


Хочется написать некий класс View, который будет запоминать часть данных от Entity на момент создания View.
А также возможность обновить представление. Что то типа:


View( First t, const Entity & e ){...}
View( Second t, const Entity & e){...}


Как лучше хранить t внутри объекта View? т.к. без этого не сделать «обновление данных» в View, надо знать, что за сущность отображается.
Отображение First отличается от отображения Second, поэтому и затык.


Про std::variant и его аналоги в курсе, но вдруг найдется более лучше решение, т.к. здесь всего 2 возможных типа.

Или можно по другому организовать хранение данных, чтобы такая проблема вообще не возникла? Буду рад любым идеям.