I am trying to create a template function with a switch case inside it.
The function signature is:
`static void doSwitch(T...)(int i)`

The code it must generate for `doSwitch!(foo, bar)()` is
`{
    switch (int)
    {
        foo:
            foo();
            return;
        bar:
            bar();
            return;
    }
}`

It would be nice if this function would cast `i` to an enum too so that I can put down a breakpoint in a debugger and maybe add some logging, but that is not strictly neccesary.


The code I have right now is:
`
template switchEnum(FunctionNames...)
{
    enum temp = [FunctionNames].join(", ");

    enum switchEnum = "{" ~ temp ~ "};";
}

static void doSwitch(FunctionNames...)(int i)
{
    auto functionName = cast(switchEnum!FunctionNames) i;

    switch (functionName)
    {
        static foreach (name; FunctionNames)
        {
            name ~ " : " ~ name ~ "(); break;";
        }
    }
}
`
But I can't get it to work and am hitting a dead end.
The error I get:
`Error: switchEnum!(foo, bar) is used as a type`

Reply via email to