How to capture a BitFlags type in a function parameter?
Paul Backus
snarwin at gmail.com
Sun Jan 31 14:16:15 UTC 2021
On Sunday, 31 January 2021 at 14:04:00 UTC, realhet wrote:
> Hi,
>
> I wan't to process every specialization of the BitFlags struct
> in a function:
> So far the best I can come up is this:
>
> static void stdUI(F)(ref F flags)
> if(F.stringof.startsWith("BitFlags!(")){}
>
> But it's obviously lame.
> If I try this way:
>
> static void stdUI(E, U)(ref BitFlags!(E, U) flags){}
>
> I get a cannot deduce arguments error.
Your problem is that you are trying to match `U`, a template type
parameter [1], with BitFlags' `unsafe`, a template value
parameter [2]. It should work if you change it to:
static void stdUI(E, Flag!"unsafe" u)(ref BitFlags!(E, u)
flags) {}
[1] https://dlang.org/spec/template.html#template_type_parameters
[2] https://dlang.org/spec/template.html#template_value_parameter
More information about the Digitalmars-d-learn
mailing list