В этом коде нет ничего плохого.Задержка проверки типов до тех пор, пока время выполнения не станет абсолютно допустимым, хотя вам придется приложить немало усилий, чтобы победить систему типов во время компиляции.Я написал класс однородного стека, в который можно было бы вставить любой тип, который функционировал бы аналогичным образом.
Однако вы должны спросить себя - для чего вы на самом деле собираетесь использовать это?Я написал однородный стек, чтобы заменить стек C ++ для интерпретируемого языка, что является довольно высоким порядком для любого конкретного класса.Если вы не делаете что-то радикальное, это, вероятно, неправильно.
Короче говоря, вы можете сделать это, и это не является незаконным, плохим или неопределенным, и вы можете заставить это работать - ноВы должны делать это только в том случае, если вам крайне необходимо делать что-то, выходящее за рамки обычного языка.Кроме того, ваш код ужасно умрет, когда C ++ 0x станет Standard, и теперь вам нужно переместиться и все остальное.
Самый простой способ думать о вашем коде - это фактически управляемая куча миниатюрного размера.,Вы помещаете в объекты различных типов ... они хранятся смежно и т. Д.
Редактировать: Подождите, вам не удалось обеспечить безопасность типов во время выполнения?Вы просто взорвали безопасность типов во время компиляции, но не заменили ее?Позвольте мне опубликовать какой-то намного более качественный код (возможно, он немного медленнее).
Редактировать: Ой, подождите.Вы хотите преобразовать вашу динамическую структуру в целом во произвольные неизвестные другие структуры во время выполнения?Ой.О чувак.О, серьезно.Какие.Просто нет.Просто не надо.Действительно, действительно, нет.Это так неправильно, это невероятно.Если бы у вас было отражение, вы могли бы сделать эту работу, но C ++ не предлагает этого.Вы можете обеспечить безопасность типов во время выполнения для каждого отдельного члена, используя dynamic_cast и стирание типов с наследованием.Не для всей структуры, поскольку, учитывая тип T, вы не можете сказать, что это за типы или двоичный формат.