Как вариант и любой из библиотеки boost работают внутри? В проекте, над которым я работаю, в настоящее время я использую тегированный союз. Я хочу использовать что-то еще, потому что объединения на С++ не позволяют использовать объекты с конструкторами, деструкторами или перегруженными операторами присваивания.
Я запросил размер любого и варианта, и сделал некоторые эксперименты с ними. В моей платформе вариант принимает размер своего самого длинного типа плюс 8 байтов: я думаю, что это всего лишь 8 байт данных типа, а остальное - сохраненное значение. С другой стороны, каждый из них занимает всего 8 байтов. Так как я на 64-битной платформе, я предполагаю, что любой из них содержит указатель.
Как любой знает, какой тип он держит? Как Вариант достигает того, что он делает с помощью шаблонов? Я хотел бы узнать больше об этих классах перед их использованием.