Pass field as a template parameter

Paul Backus snarwin at gmail.com
Wed May 8 18:07:42 UTC 2019


On Wednesday, 8 May 2019 at 18:01:53 UTC, Ben Jones wrote:
> I'm trying to write a template function like the below... is it 
> possible without using string mixins?
>
>
> void fun( alias(?) field, alias p1, alias p2)()
> {
>     if(p1.field)
>        use(p2.field);
> }
>
> called with something like
>
>
> static foreach( list of fields){
>   fun!(field, p1, p2)();
> }
>
> I have no idea how to specify the list of fields and I'm not 
> sure if alias is the right "type" for the field template 
> parameter.

void fun(string fieldName, alias p1, alias p2)()
{
     if (__traits(getMember, p1, fieldName))
         use(__traits(getMember, p2, fieldName));
}


More information about the Digitalmars-d-learn mailing list