Пустотный указатель, варианты-объекты и любые-объекты удивительны, потому что они могут хранить много разных типов в одной и той же переменной. Но у меня с ними проблема, мне нужно указать их тип (создание и / или снятие ссылки с них) во время выполнения, возможно ли это?
Для большей ясности, например, насколько я знайте, что для их создания и отмены ссылок я должен сделать следующее:
void* ptr = new int(8);
variant<int, float> var = 8;
any a = 8;
...
cout << *(int*)ptr;
cout << get<int>(var);
cout << any_cast<int>(a);
Как видите, во всех случаях тип должен быть «записан в коде» (время программирования?). Было бы отлично, если бы этот тип можно было определить во время выполнения. Дайте мне пофантазировать ... если, например, мы могли бы «хранить тип» как объект, мы могли бы сделать это:
TYPE mi_tipo;
...
mi_tipo = int; // or float, or char or any other...
...
void* ptr = new mi_tipo();
cout << *(mi_tipo*)ptr;
Что-то подобное возможно? Если нет, как бы вы это сделали? Я пытаюсь смоделировать работу компилятора, поэтому мне нужна структура, которая может хранить любые типы переменных, и поэтому мне нужен эффективный способ отменить их ссылку во время выполнения.