Есть ли способ получить текстовое представление специализации класса? Для целей контроля при повторых использованиях, что второй раз за тем же идентификатором запрашивается таже специализация класса. Или как можно как-либо по другому это проконтролировать?

Для примера, пусть будет простой базовый класс A с виртуальными методами, от него наследую шаблонный класс B. При использованнии делаю new B<SomeType> шаблонного класса и указатели таких классов сохраняю в std::map<string,A*> - где string это глобальный идетификатор.

Что-то вроде:

std::map<string,A*> global_map;

A* get_global_prop<SomeType>(const string& id) {

A*& cell = global_map[id];

if (cell != nullptr) {
// здесь контроль, что в прошлый раз была таже специализация
assert( ... );
return cell;
}

return cell = static_cast<A*>(new B<SomeType>
}








 






URL записи