main()
{
map<int, *Test<>> map = new map<int, *Test<>>(); а сделать мапу которая может хранить Test с любым аргументом шаблона реально?
да
можно map<int, void*> или map<int, std::any>, но это не то, как делают в С++
так потом же при чтении надо будет узнавать тип хранимого объекта, это дорого в runtime...
мне аж самому интересно стало, выходит что никак не сделаешь?)
можно как в джаве, унаследовать всё от одного базового типа и потом с помощью визитора читать
ну это кринж какой то
но просто в С++ стараются не складывать разные типы в один контейнер без необходимости
да я вот тоже ни разу не видел подобной практики
ну вот какой-нибудь парсер если писать, то там обход по синтаксическому дереву выглядит примерно так: switch(node.expression_type) { case Op::plus: auto plus_node = cast<PlusNode> (node); .... case Op::minus: ... }
то есть можно хранить информацию о типе прям в переменной. А switch он кстати кажется довольно быстрый, там таблица с прыжками, поэтому не надо по очереди все случаи проверять
с вами я умнею быстрее, чем обычно))
Обсуждают сегодня