On 6/28/2013 5:00 PM, JS wrote:
Is variant useful? If not then you have a point. I'm not proposing anything that
variant can't already do except add compile time performance. I do not think the
complexity is much more than what is already done.
D already checks for time mismatch. With such a variant or auto the check simply
is more intelligent.
e.g.,
auto x; // x's type is undefined or possibly variant.
x = 3; // x's type is set temporarily to an int
...
x = 3.0; // ****
at **** we have several possibilities.
1. Throw an error, this makes auto more useful and avoids many pitfalls.
2. Set x's type to a variant. [possibly goto 3 if castable to new type]
3. Set x's type to a double.
Both 2 and 3 require an extra pass to convert the code because it uses forward
inference.
auto looks only at the immediate assignment expression to determine the type. I
am talking about generalizing it to look in the scope with possible fallback to
a variant type with optional warning, an error, or type enlargement.
Again, I need a compelling use case. It's not enough to say it's the same as
variant, and it's not enough to say it can be implemented.
A compelling use case would be a pattern that is commonplace, and for which the
workarounds are ugly, unsafe, error prone, unportable, etc.