Я реализую вариант-класс (не используя boost), и мне интересно, как вы будете обрабатывать случай, когда вы будете хранить любую строку, целое или двойное и автоматически конвертировать его в соответствии с желаемым типом через ToString(), ToInt() или ToDouble().
Например,
Variant a = 7;
cout << "The answer is" + a.ToString() << endl; // should print "The answer is 7"
a = "7.4";
double &b = a.ToDouble();
b += 1;
cout << a.ToString() << endl; // should print 8.4
ToXXX
функции должны возвращать ссылку типа, к которому вы хотите преобразовать. Прямо сейчас у меня есть код, в котором он может возвращать тот же тип, который был первоначально назначен (Variant a = Int(7); a.ToInt()
works), и вызывать исключение, когда назначенный тип отличается от того, который вы хотите преобразовать.
Извините, что использование boost не является вариантом.