On Wednesday, 16 January 2019 at 11:21:53 UTC, Dukc wrote:
On Tuesday, 15 January 2019 at 11:14:54 UTC, John Burton wrote:
This is ok, but I'm not so keen on separating the creation and
construction like this.
Is there a better way that's not ugly?
You can make the constructor a template that takes a single
struct of arbitrary, and inspects (at compile time) if it has
fields with certain names and types. Then, when constructing,
you feed that constructor a std.typecons.Tuple with named
fields. Or alternatively, use a separate builder type that
makes a good struct to feed for the window constructor.
The disadvantage is that you cannot link the constructor
template directly for external programs. But for that, you
define some sort of wrapper function that always takes all the
parameters and then calls the template.
Thanks, I tried out the tuple approach and it works very well.
Constructing a tuple at the point of call with named fields works
well, but looks a bit "ugly" to me but I might use it.
I think on balance that creating a separate builder struct that I
can set the fields in and pass to the "real" constructor might be
the way to go though for me.