mtaching types with static if

ag0aep6g anonymous at example.com
Sun Oct 1 07:21:57 UTC 2017


On 10/01/2017 09:03 AM, Nicholas Wilson wrote:
> struct ArrayAccesssor(alias ptr, alias len) {}
> 
> char * p;
> size_t len;
> 
> ArrayAccesssor!(p,len) aa;
> 
> template helper(Fields...)
> {
>      static if (Fields.length == 0)
>          enum helper = "";
> 
>      else static if (is(typeof(Fields[0]) : 
> ArrayAccesssor!(ptr,len),ptr, len)) //13
>      {
>          pragma(msg, "ArrayAccesssor");
>          enum helper = helper!(Fields[1 .. $]);
>      }
>      else
>      {
>          pragma(msg, "else");
>          enum helper = helper!(Fields[1 .. $]);
>      }
> }
> 
> enum f = helper!(aa,len);
> 
> What is the correct line 13 to make the instansiation of 
> `helper!(aa,len)` print
> 
> ArrayAccesssor
> else
> 
> ?

else static if (is(typeof(Fields[0]) : ArrayAccesssor!(ptr,len),
     alias ptr, alias len))


More information about the Digitalmars-d-learn mailing list