Использование std :: shared_ptr <void> для указания на что-либо

Я используюstd::shared_ptr<void> в моем приложении, чтобы сделать умный указатель, который может указывать на различные типы структур данных, таких как структуры, векторы, матрицы ... в основном на что угодно. Я пытаюсь сопоставить некоторые имена с их структурами данных.

Я выполняю отображение с использованием хеш-таблицы:

std::unordered_map<std::string, std::shared_ptr<void>>

Могу ли я броситьstd::shared_ptr<void> вернулсяfind() вернуться кstd::shared_ptr<my_type>? Если так, то как?

Что еще более важно, это хорошая практика? Это увеличит сложность слишком сильно, поскольку приложение масштабируется? Или есть какой-то другой, совершенно другой, элегантный подход?

РЕДАКТИРОВАТЬ

Вероятно, не может использовать `Boost.Any ', поскольку он использует RTTI.

Также не может использовать базовый класс для всех этих структур данных, так как некоторые из них являются контейнерами STL, такими какstd::vector.

Оshared_ptr удалить вопрос, который обсуждается в ответе ниже, я прочитал, что shared_ptr выполняетстирание типа и хранит информацию о типе, чтобы знать, какой деструктор вызывать.

Общие пустые указатели. Почему это работает?

Почему работает std :: shared_ptr <void>

Почему shared_ptr <void> не специализирован?

Но я не уверен в этом.

Ответы на вопрос(4)

Ваш ответ на вопрос