On Thursday, 23 March 2023 at 13:38:51 UTC, Alexander Zhirov
wrote:
```d
struct MyVal
{
string value;
// Here it would be possible to use an alias to this, but
it can only be used 1 time
}
auto a = MyVal("100");
auto b = MyVal("11.2");
int MyInt = a; // Implicitly convert to target type
float myFloat = b; // Implicitly convert to target type
```
Have you tried using an associative array?
I feel that you will come up with a solution for your purpose
from the examples below:
```d
template MyContainer(string data = "")
{ // Container name ---^
struct Var
{
import std.variant;
private Variant[string] values;
alias values this;
@property
{
Variant opDispatch(string key)() const
{
return values[key];
}
void opDispatch(string key, T)(T val)
{
values[key] = val;
}
}
}
static if(data.length > 0)
{
import std.format;
mixin(data.format!"Var %s;");
} else {
Var data; // no conflicts
}
}
import std.stdio;
void main()
{
enum Tarih
{
AY = 1,
YIL = 2023
}
mixin MyContainer!"date";
date.month = cast(ubyte)Tarih.AY;
date.month.write("/");
assert(date["month"] != Tarih.AY);
assert(date["month"].type == typeid(ubyte));
date.year = cast(short)Tarih.YIL;
date.year.writeln(" in Turkish format");
assert(date["year"] != Tarih.YIL);
assert(date["year"].type == typeid(short));
writefln("Date: %s/%s", date.year, date.month);
}
```
SDB@79