I don't really like that SomeObject() will be instantiated a crap load of times for every possible combination and order of options that a user might want to supply. How do you control the bloat in a way that people won't mess up frequently?
On 20 May 2018 at 17:58, Neia Neutuladh via Digitalmars-d <digitalmars-d@puremagic.com> wrote: > On Monday, 21 May 2018 at 00:13:26 UTC, Ethan wrote: >> >> Code for context: >> https://github.com/GooberMan/binderoo/blob/master/binderoo_client/d/src/binderoo/util/enumoptions.d > > > This looks good. One small caveat: > > alias DocumentType = SomeDocument!(ObjectVersion._1_0, ObjectEncoding.UTF8); > alias DocumentType2 = SomeDocument!(ObjectEncoding.UTF8, > ObjectVersion._1_0); > > These are not the same type; they're two identical types with different > mangles. You can fix that with a layer of indirection: > > template SomeDocument(Options...) > { > alias SomeDocument = SomeDocumentImpl!(OptionsOf!(DocumentParams, > Options)); > }