Implicit type conversion depending on assignment
Ali Çehreli
acehreli at yahoo.com
Fri Mar 24 03:03:29 UTC 2023
On 3/23/23 07:36, Alexander Zhirov wrote:
> @property auto toString(T)()
The name is misleading because you want types other than string as well.
> alias toString this;
That should have been a compilation error because 'toString' does not
have a known type (because it depends on a template parameter). How can
the compiler accept that 'alias this'?
> int myInt = a;
> float myFloat = b;
Since you need to spell out 'int' and 'float' in some form anyway, the
following would be my choice, which I did use in my code before:
struct MyVal
{
private string value;
auto to(T)()
{
import std.conv : to;
return value.to!T;
}
}
void main() {
auto a = MyVal("100");
auto b = MyVal("11.2");
auto myInt = a.to!int;
auto myFloat = b.to!float;
}
Should it be an error to convert 'a' to float? If so, the following
modules may be helpful:
https://dlang.org/phobos/std_sumtype.html
https://dlang.org/phobos/std_variant.html
Ali
More information about the Digitalmars-d-learn
mailing list