On Monday, 21 May 2018 at 14:36:32 UTC, Jacob Carlborg wrote:
enum Options options = { foo: true, bar: false, a: 42, b: "guess what this does" };
SomeObject!options o;

--
/Jacob Carlborg

I like this especially if you mix it with:


enum Options options = { foo: true, bar: false, a: 42, b: "guess what this does" };
SomeObject!options o;

class myClass(Options options)
{
    void myFunction()
    {
        static if(options.foo)
        {
            ... //some code
        }
    }
}

class MyOtherClass(Options options)
{
    void myOtherFunction()
    {
        static if(options.foo && options.bar)
        {
            ... //some code
        }
    }
}

All of a sudden you encaptulate your template arguments whitout a lot of effort and allow them to be easily re-used, computed and altered. It becomes even more convenient if you're computing the content of `Options` at compile time using some complicated statements.

Reply via email to