for example, I have the code (code in sample generates different types of Properties dependingly on struct's mode value):
```D
struct PropSetting
{
    string mode;
    string type;
    string var_name;
    string title_name;
    string default_value;
}

mixin template mixin_install_multiple_properties(PropSetting[] settings)
{
    import std.format;

    static foreach (v; settings)
    {
        static if (v.mode == "gs_w_d")
        {
            mixin(
                q{
                    private {
                        mixin Property_%1$s!(%2$s, "%3$s", %5$s);
                    }

mixin Property_forwarding!(%2$s, %3$s, "%4$s");

                }.format(
                    v.mode,
                    v.type,
                    v.var_name,
                    v.title_name,
                    v.default_value,
                    )
                );
        }

static if (v.mode == "gsu" || v.mode == "gs" || v.mode == "gsun")
        {
            mixin(
                q{
                    private {
                        mixin Property_%1$s!(%2$s, "%3$s");
                    }

mixin Property_forwarding!(%2$s, %3$s, "%4$s");

                }.format(
                    v.mode,
                    v.type,
                    v.var_name,
                    v.title_name,
                    )
                );
        }

    }
}
```
currently it works kind of ok. but what it's missing is check on what none of [static if]s have worked. Ideally, I would want an static 'switch here', so I could make `static assert(false)` in it. and/or I'd like some sort of [compile time variable] to change it if [static if]s have worked and check such [compile time variable] later.

Reply via email to