How to stringify a template instantiation expression?

Yuxuan Shui yshuiv7 at gmail.com
Fri Mar 2 14:04:09 UTC 2018


On Thursday, 1 March 2018 at 17:48:02 UTC, Simen Kjærås wrote:
> On Thursday, 1 March 2018 at 16:46:30 UTC, Yuxuan Shui wrote:
>> [...]
>
> string TemplateStringOf(T...)()
> if (T.length == 1)
> {
>     import std.traits : TemplateOf, TemplateArgsOf;
>     import std.meta : AliasSeq, staticMap;
>     import std.string : indexOf;
>     import std.conv : text;
>     static if (is(typeof({ alias a = TemplateOf!T; })))
>     {
>         alias Tmp = TemplateOf!T;
>         alias Args = TemplateArgsOf!T;
>
> [...]

Ah, thanks. I was trying to match template instantiation using 
is() (i.e. is(T == S!R, S, R...)). But this doesn't work if T is 
a template.

Reading the code of TemplateOf, I realized I have to use template 
constraints for that. Maybe we can add support for something like 
is(alias T == ...)?


More information about the Digitalmars-d mailing list