Suppose, for example, you want to implement a spreadsheet Cell in C++. A cell can be either a string, a number, or perhaps empty. Ignore other cases, like it being a formula.
In Haskell, you might do something like:
data Cell = CellStr String | CellDbl Double | None
What is considered the current "best practice" for doing it in C++? Use a union in a structure with a type indicator, or something else?