auto limitation?
Namespace
rswhite4 at googlemail.com
Tue Sep 11 11:40:00 PDT 2012
> Here is a reduced code:
>
> import std.stdio;
>
> enum Type { Int, Float }
>
> auto foo(Type t)
> {
> final switch (t) {
> case Type.Int:
> return 42;
> case Type.Float:
> return 1.5;
> }
> }
>
> void main()
> {
> writeln(foo(Type.Int));
> writeln(foo(Type.Float));
> }
>
> The return type of foo() is double. (It's float in your code
> but it doesn't matter.)
>
> I think this is a bug. I guess that 'return 42' is still
> placing an int onto the program stack instead of a float. A
> workarounds are returning to!float(this._num.ivalue).
>
> But I think this is a compiler bug.
>
> Ali
I should begin to count the bugs I find with stuff like this. :)
So no correct workaround, hm?
I tried to use a Variant and in the getter method "get" and even
"coerce" but then i get the error, that the type of "get" cannot
be detected.
More information about the Digitalmars-d-learn
mailing list