May 08, 2019 Pass field as a template parameter | ||||
---|---|---|---|---|
| ||||
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. |
May 08, 2019 Re: Pass field as a template parameter | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ben Jones | 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));
}
|
Copyright © 1999-2021 by the D Language Foundation