A pattern I'd like to see more of - Parsing template parameter tuples

Jacob Carlborg doob at me.com
Tue May 22 14:53:50 UTC 2018


On Tuesday, 22 May 2018 at 11:08:13 UTC, Jonathan M Davis wrote:

> That's basically what dxml does except that it takes advantage 
> of the fact that each member is a different type (because each 
> is a differnt instance of std.typecons.Flag) so that it can 
> have a variadic function which takes any of the arguments in 
> any order. e.g.
>
> enum config = makeConfig(SkipComments.yes, SplitOnEmpty.yes);
> auto range = parseXML!config(xml);
>
> or
>
> auto range = parseXML!(makeConfig(SkipComments.yes, 
> SplitOnEmpty.yes))(xml);

I don't see how that is any better.

* It requires implementing `makeConfig`
* It requires using std.typecons.Flag which I think is an ugly 
hack due to the lack of named arguments
* It only supports boolean types

By using a regular struct it's also possible to specify named 
arguments and in any order:

struct Options
{
     bool foo;
     int value;
     bool bar;
     string value2;
}

Options options = { value2: "asd", bar: true, foo: false };

--
/Jacob Carlborg


More information about the Digitalmars-d mailing list