Ambiguity issue with expanding and evaluating single template type parameter enums

data pulverizer data.pulverizer at gmail.com
Mon Dec 27 23:01:36 UTC 2021


On Monday, 27 December 2021 at 22:52:58 UTC, data pulverizer 
wrote:
> I think the only thing to do for now is probably for me to 
> construct a template that creates a proper string for this type.

It would look something like this:

```
enum safe_stringof(T) = T.stringof;
template safe_stringof(T: MyType!U, alias U)
{
   enum string safe_stringof = "MyType!(" ~ U.stringof ~ ")";
}
```

So this

```
alias DOUBLE = MyEnum.DOUBLE;
alias STRING = MyEnum.STRING;
alias INTEGER = MyEnum.INTEGER;

void main()
{
   alias T = MyType!(INTEGER);
   alias U = MyType!(STRING);
   enum code = "writeln(\"instance: \", adder(" ~
               safe_stringof!(T) ~ "(), " ~ safe_stringof!(U) ~ 
"()" ~ "));";
   pragma(msg, code);
}

```

Which works. Now back to my very late dinner.


More information about the Digitalmars-d-learn mailing list