I have some code like

void foo()
{
    // setup stuff
    int x;
    scope(exit) something;

    //
    x = 34;
}

....


void foon()
{
    // setup stuff
    int x;
    scope(exit) something;

    //
}



All the setup stuff is virtually identical in each foo. There are slight differences such as a return value.


I would like to abstract the code code so that it can be handled in one place.

I have not found a way to do this in D. Template mixins do not work because of the arbitrary expressions. Putting the code in a template/function/lambda does not work because of the scopes which will be called when the main function exists.

A string mixin is too messy since it treats the code as a string losing all syntax highlighting, etc.

I'd love to have something like a template mixin where I can just do

mixin template fooSetup(ret)
{
    // setup stuff
    int x;
    scope(exit) something;

}


and

void foo()
{
   fooSetup(3);
}


void foo4()
{
   fooSetup(13);
}

and everything behave as it should. I'm guessing this is going to be impossible to achieve in D?

Reply via email to